home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-02-03 | 85.0 KB | 1,587 lines |
- % macropackage=lplaing
- \documentstyle[twoside,german,mflogo,a4-9]{report}
- \pagestyle{headings}
- %
- \newfont{\mc}{cmr9} % medium caps
- \newfont{\bmc}{cmbx9} % bold medium caps
- %
- \newcommand{\inimf}{{\mc INIMF}}
- \newcommand{\gem}{{\mc GEM}}
- \newcommand{\tos}{{\mc TOS}}
- \newcommand{\gemdos}{{\mc GEM}\-{\mc DOS}}
- \newcommand{\bs}{$\backslash$}
- \newcommand{\env}[1]{{\mc #1}}
- \newcommand{\benv}[1]{{\bmc #1}} % bold env. variable
- \newcommand{\file}[1]{{\tt\uppercase{#1}}} % file name
- \newcommand{\bfile}[1]{{\tt\uppercase{#1}}} % bold file name
-
-
- %
- % Wenn kein "New Font Selection Scheme" (NFSS von Mittelbach/Sch"opf)
- % installiert ist, dann mu"s man die Styleoption mflogo aus dem
- % \documentstyle rausschmei"sen, die folgenden Definitionen durch
- % Entfernen des % aktivieren und darf sich dann dar"uber "argern, da"s
- % alle METAFONT-Logos genau gleich gro"s sind, egal, ob sie nun auf der
- % Titelseite oder im laufenden Text erscheinen. Wer alte Versionen meiner
- % METAFONT-Anleitung kennt, wei"s, da"s dort u.a. bei jeder "Uberschrift, die
- % das METAFONT-Logo enth"alt, alle m"oglichen Tricks veranstaltet werden
- % mu"sten, um in der "Uberschrift selbst, im Inhaltsverzeichnis und in der
- % Kopfzeile auf jeder Seite das Logo im jeweils passenden Schriftschnitt
- % anzuw"ahlen. Genau dies ist nun mit dem NFSS nicht mehr n"otig (an dieser
- % Stelle auch mal ein gro"ses Dankesch"on an Frank Mittelbach und Rainer Sch"opf
- % f"ur ihre riesige Arbeit).
- %
- % Zur Information: NFSS ist eine Style-Option, die die Fontauswahl von
- % LaTeX komplett durch eine neue ersetzt. NFSS ist eine Vorarbeit zu neuen
- % LaTeX-Versionen (2.10 oder irgendwann 3.0), um jetzt schon mit einigen
- % der neuen M"oglichkeiten arbeiten und experimentieren zu k"onnen. Mit NFSS
- % ist es erheblich leichter, neue Fontfamilien (z.B. Pandora-Fonts, AMS-
- % Fonts, diverse PostScript-Fonts, oder eben Logos in verschiedenen Gr"o"sen
- % und Schnitten) in ein Dokument einzubinden. In bisherigen LaTeX-Versionen
- % mu"ste man dazu immer lfonts.tex "andern, wenn die neuen Fonts auch automa-
- % tisch ihre Gr"o"se "andern oder z.B. fett erscheinen sollten. Hinzu kam dann
- % nat"urlich noch das Erzeugen einer neuen Format-Datei mit IniTeX...
- %
- % Ein weiterer Vorteil von NFSS ist die Entkopplung der Fontauswahl von
- % der Gr"o"senangabe. In LaTeX 2.09 schaltet "\bf\large" nicht etwa auf eine
- % gro"se Fettschrift um, sondern auf gro"se "Normalschrift" (Roman) um, weil
- % die Gr"o"senauswahl automatisch auch eine Fontauswahl beinhaltet ("\large\bf"
- % liefert das Gew"unschte). Au"serdem ist mit NFSS die Fontauswahl nicht ein-
- % dimensional, sondern bietet drei voneinander unabh"angige Parameter (wenn
- % man von der Gr"o"senangabe mal absieht): family, series und shape, z.B.
- % "Computer Modern/medium/normal = cmr" oder "Computer Modern/bold extended/
- % italic = cmbxti", oder nat"urlich auch "METAFONT-Logo/bold extended/normal
- % = logobf". Man kann nun mit NFSS einstellen, ob man kompatibel zur alten
- % LaTeX-L"osung sein will (und damit auch fast alle alten Dokumente ohne
- % Probleme "ubersetzen kann), oder ob man die neuen M"oglichkeiten nutzen
- % m"ochte, und z.B. mit "\bf\it\large" auf einen fetten, kursiven (!) Schrift-
- % schnitt in beispielsweise 12 Punkt Gr"o"se umschaltet. In diesem Fall mu"s
- % man ggfs. bei alten Dokumenten ein "oldlfont" bei den Styleoptionen (in
- % den eckigen Klammern bei \documenstyle) angeben.
- %
- % Leider ist auf den beiden METAFONT-Disketten nicht mehr gen"ugend Platz,
- % um das NFSS (auf Platten und Disketten meist unter dem Namen "fontsel"
- % zu finden) mitzuliefern. Wer es noch nicht besitzt, kann bei mir die
- % Diskette 220 (TeX-Makros) oder 020 (AMS-Fonts + NFSS) bestellen (siehe
- % Datei DISKLIST.DOC), oder sich das NFSS bei Dante oder bei Stefan Lind-
- % ner besorgen oder von einem der vielen per Modem oder Datennetz erreich-
- % baren TeX-Server (rusinfo in Stuttgart, dhdurz1 in Heidelberg, Stefan
- % Lindners Bagdad-TeX-Server) kopieren.
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % \newfont{\logo}{logo12}
- % \newcommand{\mf}{{\logo META}\-{\logo FONT}}
- %
-
- \hfuzz 1.5pt % Soviel darf es schon mal "uber den rechten Rand hinausragen
- \setcounter{secnumdepth}{1} % Nur bis \section durchnumerieren
- \setcounter{tocdepth}{1} % Im Inhaltsverz. nur \chapter und \section
- %
- \begin{document}
- %
- %******************************* Titelseite ********************************
- %
- \title{{\Huge\mf} \\[1.5cm]
- {\normalsize (Version%
- \thanks{Die erste Versionsnummer ist die offizielle Z"ahlung von
- Donald~E.~Knuth, die zweite bezeichnet die aktuelle Implementation
- auf dem Atari~ST}
- 2.7 / 2.2)} \\[1.5cm]
- Bedienungsanleitung}
- \author{Lutz Birkhahn}
- \date{3. Februar 1992}
- \maketitle
- %**************************** 2. Seite (Copyright) *************************
- \begin{titlepage}
- \noindent Diese Anleitung darf von jedermann kopiert oder ausgedruckt werden,
- solange damit keine kommerziellen Interessen verbunden sind.
- \vfill
- \raggedright
- F"unfte Auf"|lage.\\
- Februar 1992\\
- \end{titlepage}
-
- %***************************** Inhaltsverzeichnis **************************
- %
- \tableofcontents
- %
- %******************************* Einfuehrung ********************************
- %
- \chapter{Einf"uhrung}
-
- Im f"unfzehnten Jahrhundert wurde das erste mal versucht, Buchstaben auf
- mathematischem Wege zu erzeugen. Nach einer Bl"utezeit im sechzehnten und
- siebzehnten Jahrhundert wurde diese Methode im achtzehnten Jahrhundert
- aufgegeben, die Ergebnisse waren einfach zu schlecht. Erst seitdem
- in der heutigen Zeit
- Computer die Berechnungen schnell und exakt durchf"uhren k"onnen (auch
- die Mathematik ist w"ahrend dieser Zeit nicht stehen geblieben), scheint
- es m"oglich und vielleicht auch lohnend zu sein, die Mathematik zur
- Erzeugung von Buchstaben zu verwenden.
-
- Der bekannte Mathematiker und Informatiker Donald~E.~Knuth hat sich seit
- 1977 mit dem weiten Gebiet der Typographie besch"aftigt, nachdem er die
- ersten mit Computerhilfe hergestellten Drucke seiner Buchreihe
- "`The Art of Computer Programming"' gesehen hatte. Die erste Auf"|lage
- dieser Buchreihe war noch im Bleisatzverfahren hergestellt worden, und Knuth
- war nach einem Vergleich des damals noch neuen Computersatzes mit den
- herk"ommlichen Druckverfahren so entt"auscht von der neuen Technik, da"s er
- sich seine eigenen Gedanken "uber Typographie in Verbindung mit Computern
- machte. Ergebnisse dieser Forschungsarbeiten waren das Schriftsatzprogramm
- \TeX 78 und \mf 79, ein Programm f"ur den Entwurf von Schriften f"ur
- rasterorientierte Ausgabeger"ate mit mathematischen Mitteln. Nach einigen
- Jahren Erfahrung mit diesen beiden Programmen hat er 1982 eine neue
- Version von \TeX\ und 1984 ein neues \mf\ geschrieben.
- \mf\ entwickelte er praktisch vollkommen neu, nachdem sich gezeigt hatte,
- da"s der bisherige Ansatz erhebliche Schw"achen aufwies.
-
- Dieses neue \mf\ (und auch das neue \TeX) hat Knuth in der von ihm
- erdachten, Pascal-"ahnlichen Sprache {\mc WEB} formuliert und in Buchform
- \cite{mfprog,texprog}
- ver"offentlicht. Das eigentlich neue an {\mc WEB} ist die Kombination von
- Programm und Dokumentation in {\it einer\/} Datei, wof"ur Knuth den Begriff
- "`Literarisches Programmieren"' eingef"uhrt hat\cite{web}.
- Und in der Tat sind die
- Programme fast so gut lesbar wie ein Roman, und sie verdeutlichen,
- was Knuth von der "`Kunst, zu programmieren"' versteht. Mein Dank geht an
- Knuth, da"s er seine Kunst nicht nur theoretisch in den B"uchern
- "`The Art of Computer Programming"' ver"offentlicht, sondern sie
- auch praktisch in den Programmen \TeX\ und \mf\ vorgef"uhrt hat.
-
- Angesichts dieser gro"sen Leistungen war es f"ur Stefan Lindner und mich
- -- als wir im Fr"uhling 1987 auf diese Programme stie"sen -- klar, da"s
- wir sie f"ur den Atari~ST implementieren wollten, und da"s die angepa"sten
- Programme als Shareware verbreitet werden sollten. Wegen der Form von
- WEB-Dateien und der Tatsache, da"s wir beide keine gro"sen Freunde von
- Pascal sind, kam uns beiden sofort der Gedanke, die Programme in die
- Programmiersprache C zu "ubersetzen. Also besorgten wir uns die entsprechenden
- B"ucher von Knuth, und tippten sie ab, wobei wir die Programme gleich in
- C "ubersetzten. Stefan implementierte \TeX, w"ahrend ich mich auf
- \mf\ st"urzte. Nach "uber einem Jahr Tippfehlersuche und Ausprobieren
- verschiedener C-Compiler waren im Sommer 1988 erste brauchbare Ergebnisse
- zu sehen. Inzwischen hat sich Turbo~C von Borland/Heimsoeth als der am besten
- geeignete Compiler herausgestellt, und es konnten noch einige Verbesserungen
- an der Benutzer\-ober\-fl"ache von \TeX\ und \mf\ vorgenommen werden. Die
- vorliegenden Versionen von \mf\ und \TeX\ sind das Ergebnis der
- langen Bem"uhungen, Knuths Programme f"ur Besitzer von Atari~ST Computern
- zug"anglich zu machen. Beide sind {\tt TRAP}- bzw.\ {\tt TRIP}-getestet,
- haben also nachgewiesen, da"s sie sich auch bei "`unm"oglichen"' Eingaben
- genau wie die Originale verhalten.
-
- \vfill
- %
- %------------------------------ Der Autor ----------------------------------
- %
- \section{Der Autor}
- An dieser Stelle m"ochte ich mich ganz kurz vorstellen. Geboren bin ich
- anno 1963 (zuf"alligerweise erhielt Donald Knuth in diesem Jahr auch seinen
- Doktortitel in Mathematik vom California Institute of Technology), und
- entdeckte schon in der Schule mein Interesse f"ur Computer, zun"achst an
- einem Tischrechner von WANG, der noch mit einem richtigen Kernspeicher
- ausgestattet war, und bei dem man mit Hilfe einer teuren Zusatztastatur
- sogar Buchstaben~(!) eingeben konnte, wenngleich diese auch nur selten
- richtig im Rechner ankamen. Nach diversen Zwischenschritten (CBM 3000,
- AIM-65, mein erster eigener Computer, und C-64) wurde ich 1985 schlie"slich
- stolzer Besitzer eines Atari~ST. Neben \mf\ bin ich zur Zeit auch noch
- mit einem Informatik-Studium besch"aftigt.
-
- Meine derzeitige Adresse ist:\label{adr}
- \begin{verse}
- Lutz Birkhahn\\
- F"urther Str.\ 6\\
- W-8501 Cadolzburg 2\\
- Deutschland\\[0.5\baselineskip]
- Telefon: 0\,91\,03 / 28\,86
- \end{verse}
-
- Wer seine Registrierungsgeb"uhr zahlen m"ochte (Spenden werden
- nat"urlich auch angenommen), "uberweist den Betrag am besten auf eines
- der folgenden Konten:
- \begin{quote}
- Kontonr.~3062\,25-852 beim Postgiroamt N"urnberg, BLZ~760\,100\,85
-
- Kontonr.~533\,45\,37 bei der Vereinigten Sparkasse im Landkreis
- F"urth, Bankleitzahl 762\,501\,10
- \end{quote}
-
- Mittels elektronischer Post (email) bin ich im Subnetz unter
- {\tt lutz@bisun.nbg.sub.org}\label{mailboxen} erreichbar. Da s"amtliche
- Daten "uber private Telefonleitungen gehen und teilweise auch noch
- zus"atzliche "Ubertragungsgeb"uhren kosten (f"ur Senden {\em und
- Empfangen\/}!), bitte keine Riesenbriefe schicken oder zumindest vorher
- bei mir anfragen.
-
- %
- %------------------------ Weitere Informationen ---------------------------
- %
- \section{Weitere Informationen}
- In gro"sen Teilen des Z-Netzes und Fidonetzes sowie im Subnetz und Mausnetz
- gibt es ein \TeX-Forum (Z-Netz: /T-NETZ/TEX, Fido: TEX.GER, Subnetz: sub.tex,
- Maus: Gruppe TeX), das sowohl von Entwicklern und Experten als auch von
- Benutzern (Anf"anger und Fortgeschrittene) von \TeX\ und \mf\ f"ur den
- Informationsaustausch und Fragen genutzt wird. Wer einen Zugang zu einem
- der genannten Netze hat und auf dem laufenden bleiben will oder Fragen
- zu einem der Programme hat, sollte sich auf jeden Fall mal in diesem Forum
- umsehen. Dieses Forum ist nat"urlich nicht auf Atari-Benutzer beschr"ankt.
-
- Wer Zugang zum Internet oder Bitnet (EARN etc.) hat, kommt noch an
- viel mehr Informationen ran, als Stichworte seien hier nur die \TeX hax
- oder die deutsche Mailingliste tex-d-l@dearn genannt. Wer m"ochte, kann
- hier den ganzen Tag damit zubringen, Nachrichten "uber \TeX\ zu lesen.
-
- Neuerdings hat Stefan Lindner f"ur Modem-Besitzer auch einen eigenen
- \TeX-Server eingerichtet, der etliche Megabytes an \TeX-Makros,
- Zeichens"atzen f"ur \mf\ und Programmen (haupts"achlich f"ur den
- Atari~ST) bietet. Die Telefonnummer ist 09\,11~/~75\,85\,47,
- Parameter 300--2400/8/N/1, Benutzername {\tt gast}.
-
- Von Stefan Lindner kann man zu "ahnlichen Konditionen wie bei \mf\ das
- be\-r"uhm\-te Schriftsatzprogramm \TeX\ (ebenfalls von Donald Knuth entwickelt)
- zusammen mit DVI-Ger"atetreibern f"ur die gebr"auchlichsten Dru"cker
- bekommen. Seine Adresse lautet:
- \begin{verse}
- Stefan Lindner\\
- Iltisstra"se 3\\
- 8510 F"urth\\[0.5\baselineskip]
- Telefon: 09\,11~/~7\,59\,18\,86
- \end{verse}
-
-
- %
- %****************************** Shareware **********************************
- %
- \chapter{Shareware}
-
- %
- %------------------------ Shareware-Bedingungen ----------------------------
- %
- \section{Shareware-Bedingungen}
- Beide Disketten d"urfen (und sollen) unter den folgenden
- Bedingungen beliebig kopiert und weitergegeben werden:
- \begin{itemize}
- \item Es werden {\it alle\/} Dateien auf der Diskette kopiert.
- \item Diese Anleitung und die Programme \mf\ und \inimf\ werden nicht
- ver"andert.
- \item Die Weitergabe erfolgt ausschlie"slich zu nichtkommerziellen Zwecken.
- \end{itemize}
- Kurz gesagt, ich m"ochte nicht, da"s unvollst"andige Versionen kursieren,
- oder da"s jemand mit diesen Programmen Geld verdient.
-
- Ich kann nat"urlich f"ur die gesamten Programme und die Daten keine
- Garantie geben, und auch keine eventuell auftretenden Sch"aden ersetzen
- (wenn also z.B. die Augen nicht mehr mitmachen, weil sie durch einen
- falschen Zeichensatz zu Tode erschreckt sind, dann bitte die Arztrechnung
- nicht an mich schicken). Ich habe jedenfalls versucht, alles so gut und
- richtig wie m"oglich zu machen.
-
- Jeder, dem diese Implementation von \mf\ gef"allt, und der die
- Programme "ofter verwendet, wird gebeten, 50,- DM (au"serhalb Deutschlands
- wegen des h"oheren Portos 55,- DM oder US-\$ 30 bar oder Euroscheck oder
- Order-Scheck)
- an meine auf Seite~\pageref{adr} angegebene Adresse zu schicken. Damit ist
- er ein registrierter Benutzer und erh"alt folgenden Service:
- \begin{itemize}
- \item Die neueste Version (mit Seriennummer, dazu unten mehr) wird kostenlos
- zugeschickt.
- \item Telefon-Hotline: kostenlose Beratung registrierter Benutzer\footnote{%
- Das soll nat"urlich nicht hei"sen, da"s nur registrierte Benutzer
- bei mir anrufen d"urfen. "Uber Lob, Kritik, Verbesserungsvorschl"age
- oder gar selbstgeschriebene Programme zu \mf\ oder Ideen dazu freue
- ich mich immer. Nur kann es passieren, da"s ich bei Fragen, zu deren
- Beantwortung ich selbst erstmal etwas Zeit investieren mu"s, zun"achst
- frage, ob der Anrufer registriert ist.}.
- \item Registrierte Benutzer k"onnen f"ur 30,- DM (oder US-\$ 20) den kompletten
- Quellcode (in C) zu \mf\ anfordern.
- \item Das erste Update wird kostenlos zugeschickt (wo kriegt man heute noch
- so einen Service?), alle weiteren Updates werden schriftlich
- bekanntgegeben, registrierte Benutzer erhalten diese dann gegen
- voraussichtlich ca.\ 10,- DM pro Diskette.
- \end{itemize}
-
- %
- %------------------------------ Seriennummer -------------------------------
- %
- \section{Seriennummer}
- In jeder \mf-Version ist eine Seriennummer enthalten. Wenn jemand (im
- folgenden A genannt) den oben genannten Betrag bezahlt, erh"alt er daf"ur
- eine Version mit einer neuen Seriennummer. Diese Nummer wird bei mir
- registriert. Wenn er nun diese registrierte Version weitergibt (und das
- soll er ja), und einer der
- Empf"anger dieser Kopie zahlt seinerseits die Sharewaregeb"uhr,
- so erh"alt A davon 15,- DM (bzw. ca. US \$ 8) als "`Pr"amie"' f"ur die
- Verbreitung des Programmes. Wenn also nur drei von den Leuten, an die man
- die Diskette weitergegeben hat, sich bei mir registrieren lassen, hat man
- bereits seine Ausgaben fast amortisiert.
-
- Wenn jemand allerdings mehr als drei"sigmal die Belohnung kassiert, gehe ich
- davon aus, da"s es sich um einen kommerziellen Software-Vertrieb handelt,
- und gebe an diesen keine Belohnungen mehr weiter.
-
- Mit diesem Konzept will ich einerseits die Verbreitung von \mf\ etwas
- beschleunigen, und andererseits versuchen, m"ogliche Anfangsschwierigkeiten
- durch pers"onlichen Kontakt unter den Benutzern zu verringern (damit ein
- Benutzer, der weit entfernt von mir wohnt, bei Problemen mit \mf\ zun"achst
- zum vermutlich n"aher gelegenen Bekannten gehen kann, von dem er die Kopie
- hat, bevor er bei mir anruft, um das Problem zu l"osen. Vieles l"a"st sich
- eben bei einem pers"onlichen Gespr"ach viel leichter und billiger l"osen
- als "uber eine lange Telefonleitung).
-
- Damit ich die "`Pr"amie"' weiterleiten kann, bitte bei der Registrierung
- unbedingt die Seriennummer der bisher benutzten Version (erscheint bei
- jedem Start von \mf\ in der zweiten Zeile auf dem Bildschirm) mit angeben.
- Falls man bisher noch keine Version besa"s (ist mir im Moment allerdings
- noch unklar, wie man dann an diese Anleitung kommen kann), sollte man
- dies bitte deutlich vermerken. Am besten druckt man die Datei
- \file{FORMULAR.TXT} auf einem Drucker aus und macht die entsprechenden
- Eintragungen oder sendet das ausgef"ullte Formular an die auf
- Seite~\pageref{mailboxen} angebene email-Adresse.
-
- %
- %******************************* Installation ******************************
- %
- \chapter{Installation}
-
- Alle Hinweise in diesem Kapitel sind lediglich Vorschl"age f"ur Benutzer,
- die bis jetzt noch wenig Erfahrung mit \mf\ haben. Durch die Verwendung
- einer "`Setup-Datei"' kann man die Programme und Daten fast
- beliebig auf seinen Speichermedien verteilen.
-
- Da die kompletten Sourcecodes der Zeichens"atze insgesamt "uber
- 700~KByte Umfang besitzen, war es n"otig, einige Zeichens"atze mit
- dem Programm {\mc LHARC} zu komprimieren. Dieses Programm befindet sich
- ebenfalls auf Diskette~2. Bez"uglich der Weitergabe dieses Programmes
- verweise ich auf die dortige Anleitung.
-
- %
- %------------------------ Installation auf Festplatte ----------------------
- %
- \section{Installation auf Festplatte}
- Besitzer einer Festplatte sind (nicht nur) bei der Installation fein raus:
- Sie starten einfach das Programm \file{INSTALL.PRG} auf Diskette~1. Da
- dies ein allgemein verwendbares Programm ist, fragt es erst einmal nach
- einer Datei, in der die genauen Installationsanweisungen stehen. F"ur
- \mf\ w"ahlt man hier die Datei \file{METAFONT.INS} aus. Nun kann man
- ausw"ahlen, ob man nur die Grundinstallation durchf"uhren will oder auch
- die \TeX-Shell installieren will, und ob man die Zeichens"atze komprimiert
- auf der Platte stehen haben m"ochte oder lieber ausgepackt (schneller,
- aber daf"ur mehr Platzbedarf).
-
- Wenn man nun den OK-Button anklickt, wird man noch nach dem Ziel gefragt,
- wo das \mf-System installiert werden soll (hier wird der Pfad angegeben,
- wo dann das Programm selbst und alle Unterordner stehen sollen). Dann
- kann man sich zur"ucklehnen und der Installation zuschauen, nur einmal
- wird man noch aufgefordert, die zweite Diskette einzulegen.
-
- Man kann "ubrigens auch die Disketten in eine RAM-Disk oder auf die
- Festplatte kopieren, dann geht die Installation noch schneller. Man mu"s
- dabei nur beachten, da"s die Installationsdatei \file{METAFONT.INS}
- auch von Platte bzw.\
- RAM-Disk geladen wird. Die Auf"|forderung nach einem Diskettenwechsel
- beantwortet man einfach mit einem Tastendruck (es mu"s {\bf nicht} die
- Festplatte oder RAM-Disk ausgewechselt werden!).
-
- Wenn das Programm fertig ist, steht \mf\
- gebrauchsfertig auf der Platte, die Setup-Datei ist auch bereits an die
- "ortlichen Gegebenheiten angepa"st. Lediglich bei der \TeX-Shell m"ussen
- noch die Pfade eingestellt werden (siehe dazu die Anleitung der \TeX-Shell).
- Ein weiterer Vorteil des Installationsprogrammes ist die automatische
- "Uberpr"ufung der Dateien mittels CRC-Pr"ufsummen, und zwar nicht nur
- beim Extrahieren (Auspacken) von Dateien aus LHARC- oder Larc-Dateien,
- sondern auch beim Kopieren.
-
- %
- %------------------- Installation auf Disketten-Laufwerk -------------------
- %
- \section{Installation auf Disketten-Laufwerk}
- F"ur eigene Experimente mit \mf, bei denen die CMR-Sourcecodes nicht
- ben"otigt werden, kann die Programmdiskette (am besten nat"urlich eine
- Sicherheitskopie davon) ohne spezielle Installation verwendet werden.
- Benutzer, die nur einseitige Laufwerke besitzen, k"onnen sich (bei einem
- Freund mit zweiseitigem Laufwerk) eine Arbeitsdiskette zusammenstellen,
- auf der nur die Dateien \file{METAFONT.PRG}, \file{METAFONT.RSC},
- \file{MFSETUP} und
- \file{PLAIN.BSE} stehen. Es bleiben dann noch etwas mehr als 100~KByte
- "ubrig, in denen Eingabedateien (\verb|*.MF|) sowie LOG-, GF- und
- TFM-Dateien untergebracht werden k"onnen. Routinierte Diskjockeys oder
- Besitzer von zwei Laufwerken k"onnen in der Setup-Datei auch
- Laufwerk~\verb|B:\|
- angeben (z.B. bei den {\tt inputpaths}). Wer noch etwas Platz im RAM hat,
- kann eine kleine Ramdisk (Minimum ca.\ 50~KByte) installieren, und in der
- Setup-Datei {\tt logpath}, {\tt gfpath} oder {\tt tfmpath} (auf diese
- Dateien wird in der Regel w"ahrend des gesamten Programmlaufes etwas
- geschrieben) auf die Ramdisk setzen.
-
- Um komplette Zeichens"atze f"ur \TeX\ zu erzeugen, mu"s man schon etwas
- mehr mit dem Diskettenplatz jonglieren. Nachdem es aber inzwischen
- m"oglich ist, auch komprimierte Dateien direkt mit \mf\ zu lesen,
- ist es durchaus m"oglich (wenn auch nicht komfortabel), mit nur
- einem einseitigen Laufwerk zu arbeiten. Wer tats"achlich so enge
- Platzverh"altnisse hat und deswegen mit der Installation nicht klar
- kommt, m"oge sich bei mir melden, dann versuche ich, eine arbeitsf"ahige
- Verteilung der Dateien zu finden.
-
- Insgesamt braucht man ca.\ 1~MByte Speicher %***** <1 MByte!!!
- auf Disketten und
- evtl.\ Ramdisk, um das Programm, die Base-Datei und alle Zeichensatz-Sourcen
- zu speichern. Es w"urde hier wohl zu weit f"uhren, f"ur jede m"ogliche
- Rechnerkonfiguration (davon gibt es schlie"slich sehr viele verschiedene)
- die beste Auf"|teilung anzugeben, schon allein deswegen, weil es auch auf
- den Anwendungsfall ankommt, was man als {\em beste\/} Auf"|teilung ansehen
- kann. Ich denke jedoch, da"s es mit diesen Informationen jedem Benutzer
- m"oglich sein sollte, eine f"ur seine Anwendung passende Verteilung der
- Daten zu finden (wenn nicht, gibt es ja immer noch die "`Telefon-Hotline"'
- oder andere \mf-Benutzer, die solche Arbeiten schon hinter sich haben).
-
- %
- %-------------------------- Wichtige Hinweise --------------------------
- %
- \section{Wichtige Hinweise}
- Im folgenden ein paar Hinweise zum Betrieb des Programmes, die sich im
- Laufe der Zeit angesammelt und keinen besseren Platz in dieser Anleitung
- gefunden haben.
-
- \begin{itemize}
- \item Wenn man die Version~2.0 von Tempus verwendet und dort die Parameter
- abspeichern will, so sollte man das Programm dazu unbedingt vom Desktop
- aus starten. Wenn man Tempus aus der \TeX-Shell (oder einer anderen Shell)
- startet und dann "`\verb|Param. & sichern...|"' aufruft, werden die
- Parameter {\em nicht} in Tempus, sondern in der {\em Shell} abgespeichert!
- Die Shell kann man nach so einer Aktion unbesorgt in den Desktop-Papierkorb
- schmei"sen. Ab Tempus Version~2.05 ist dieser Fehler beseitigt worden.
- \item Mit einigen `mode'-Definitionen (z.B. \verb|stlaser| f"ur den
- Atari-Laser"-dru"cker {\mc SLM804}) in der Datei \file{atari.mf}
- gibt es manchmal Probleme mit CMR-Zei\-chen\-s"atzen:
- \mf\ meldet den Fehler \verb|"! Bad pos..."| oder \verb|"! Strange path..."|.
- Dieser Fehler liegt nicht an der \mf-Implementation, und auch die
- CMR-Sourcecodes sind korrekt. Eine genauere Untersuchung ergab, da"s die
- negativen `{\tt blacker}'-Werte in der Datei \file{ATARI.MF} (bzw.\
- \file{modes.mf}) schuld sind. Knuth
- warnt in seinem Buch "`Computer Modern Typefaces"' (Computers \&
- Typesetting, Volume~E) auf Seite~7 ausdr"ucklich vor einem
- $\hbox{\tt blacker} < 0$ :
-
- \begin{quote}
- ``Trouble might also arise if the device-specific parameter called
- {\it blacker\/} is made negative.''
- \end{quote}
-
- Leider sehen auf manchen Ger"aten die Zeichens"atze nun mal am besten aus,
- wenn `{\tt blacker}' negativ ist. Deswegen wurde mittels der Datei
- \file{cmlocal.mf} eine Behandlung des Problems eingef"uhrt. Es wird
- zwar noch ein Fehler gemeldet, aber zumindest ist der Zeichensatz noch
- verwendbar, wenn dieser Fehler aufgetaucht ist. Eine genauere Erkl"arung
- des Problems und der zur L"osung verwendeten Methode findet man in
- der Datei \file{doc}\bs\file{bad\_pos.doc}.
- \end{itemize}
-
-
- %
- %******************** METAFONT auf dem Atari ST ****************************
- %
- \chapter{\protect\mf\ auf dem Atari ST}
-
- \mf\ wurde auf dem ST als \gem-Programm realisiert. S"amtliche Textausgaben
- gehen in ein Text-Fenster, dort werden auch die Eingaben des Benutzers
- vorgenommen. Ein zweites Fenster dient der Ausgabe von Grafik. Dieses wird
- aber erst auf Anforderung ge"offnet, z.B. mit den \mf-Befehlen {\tt openit}
- oder {\tt showit}. Wenn man bei der Erzeugung eines Zeichensatzes jedes
- Zeichen sehen will, bevor es in die GF-Datei geschrieben wird, kann man
- dies mit dem \mf-Befehl {\tt screenchars} einschalten. Mit {\tt
- screenstrokes} kann man jeden einzelnen "`Pinselstrich"' auf dem Bildschirm
- sehen. F"ur die weiteren Grafikbefehle sei auf das \mf book~\cite{mfbook}
- verwiesen. F"ur Spezialanwendungen kann man die \gem-Umgebung in \mf\
- auch deaktivieren, siehe dazu die Beschreibung der Environment-Variablen
- \verb|MF_NOGEM| in Abschnitt~\ref{environment}.
-
- Man kann die Fenster jederzeit vergr"o"sern, verkleinern oder verschieben,
- auch w"ahrend \mf\ besch"aftigt ist. Bei l"angeren Dateioperationen (z.B.
- Laden der Base-Datei) oder komplizierten Berechnungen kann es jedoch
- vorkommen, da"s \mf\ nicht sofort auf die Aktivit"aten des Benutzers
- reagiert, soda"s man entsprechend l"anger auf die Maustaste dr"ucken mu"s.
- In den meisten F"allen zeigt \mf\ diesen Umstand mit einer "`flei"sigen
- Biene"' als Mauscursor an.
-
- Die Fenstergr"o"sen und -Positionen zu Beginn des Programmes k"onnen durch
- verschiedene Environment-Variablen eingestellt werden, siehe dazu den
- Abschnitt~\ref{environment}.
-
- Die Arbeit von \mf\ kann man durch gleichzeitiges Dr"ucken der Tasten
- {\mc CONTROL} und {\mc ALTERNATE} unterbrechen, man landet dann in der
- normalen Feh\-ler\-be\-hand\-lungs-Rou\-ti\-ne, wo man z.B. Endlosschleifen untersuchen
- kann, Variablen abfragen oder das Programm beenden kann. Aus den gleichen
- Gr"unden wie im vorigen Absatz mu"s man die beiden Tasten eventuell etwas
- l"anger gedr"uckt halten. \mf\ unterbricht n"amlich nur dann seine Arbeit,
- wenn es auch in der Lage ist, zus"atzliche Eingaben des Benutzers zu
- verdauen. Trotzdem ist es zum Beispiel bei der Untersuchung von Variablen
- ratsam, die Aktivit"aten vor \mf\ zu "`verstecken"', damit man nichts
- durcheinanderbringt. Dies kann man durch das {\tt hide}-Makro erreichen.
- Um z.B. den Inhalt der Variablen $x$ anzuzeigen, gibt man folgendes ein:
- \begin{verbatim}
- I hide(show x)
- \end{verbatim}
-
- W"ahrend \mf\ auf eine Eingabe wartet, kann man es durch Dr"u"cken der
- {\mc ESC}-Taste abbrechen. Wenn man in der daraufhin erscheinenden
- Alarm-Box auf {\tt abort} klickt, riskiert man allerdings unvollst"andige
- GF- und TFM-Dateien!
-
- %
- %------------------------- Komprimierte Dateien --------------------------
- %
- \section{Komprimierte Dateien}\label{larc}
-
- Wenn man wenig Speicherplatz zur Verf"ugung hat (und wer hat das nicht?)
- und daf"ur eine etwas geringere Geschwindigkeit in Kauf nehmen
- will, kann man die \mf-Eingabedateien in komprimierter Form speichern.
- \mf\ ist in der Lage, mit dem Programm Larc komprimierte Dateien
- (\verb|*|\file{.lzs}) einzulesen. Dieses Dateiformat ist "ahnlich dem
- bekannten \verb|*|\file{.lzh}-Format von LHarc (genauer gesagt ist es ein
- Vorg"anger davon, und neuere LHarc-Versionen sind auch in der Lage,
- dieses Format zu verwenden), mit dem wesentlichen Unterschied, da"s
- es erheblich schneller expandiert werden kann als \file{lzh}-Dateien.
-
- Um \mf\ mitzuteilen, welche Larc-Archive es durchsuchen soll,
- mu"s ihm lediglich im Suchpfad f"ur die Eingabepfade ({\tt inputpaths},
- siehe dazu den Abschnitt~\ref{setup}) der Name der \file{lzs}-Dateien
- genannt werden.
-
-
- %
- %--------------------------- Setup-Datei -------------------------------
- %
- \section{Setup-Datei}\label{setup}
- In der Setup-Datei stehen s"amtliche Pfade, auf die \mf\ zugreifen kann.
- Wenn in der Kommandozeile nichts anderes angegeben wurde, sucht \mf\
- nach der Datei \file{MFSETUP} im aktuellen Ordner.
- Die Syntax f"ur die Pfad-Definitionen ist bis auf die Bezeichnung der
- Schl"usselw"orter genau die gleiche wie beim \TeX\ von Stefan Lindner. Es sind
- also zwischen den einzelnen W"ortern (Token) beliebig viele Leerzeichen,
- Returns, Tabulatoren und Kommentare erlaubt. Kommentare werden mit einem
- {\tt`\%'} eingeleitet
- und gehen bis zum Zeilenende (wie bei \TeX\ und \mf\ "ublich). Auf der
- linken Seite vom {\tt `='} d"urfen folgende Schl"usselw"orter stehen
- (in Klammern ist jeweils angegeben, welchen Pfad \mf\ verwendet, wenn in
- der Setup-Datei nichts definiert ist). Wenn nichts anderes angegeben ist,
- gelten die Pfade sowohl f"ur \mf\ als auch f"ur \inimf.
- \begin{description}
- \item [\tt poolfile] gibt an, von wo \inimf\ den String-Pool l"adt.
- Dies mu"s ein g"ultiger Dateiname sein, er darf also insbesondere nicht
- mit einem Backslash (\verb|\|) enden, und die Extension mu"s bei Bedarf
- explizit angegeben werden. Dieser Pfad gilt nur f"ur \inimf; \mf\ ignoriert
- ihn. (\bs\file{mf}\bs\file{bases}\bs\file{mf\_pool})
- \item [\tt defaultbase] ist die Base-Datei, die \mf\ l"adt, wenn der
- Benutzer nichts anderes angegeben hat. Auch dies mu"s genauso wie
- {\tt poolfile} ein g"ultiger Dateiname sein.
- (\bs\file{mf}\bs\file{bases}\bs\file{plain.bse})
- \item [\tt basepaths] dort wird die Base-Datei gesucht, wenn eine
- angegeben wurde. Wenn keine angegeben wurde, l"adt \inimf\ gar keine
- Base-Datei, w"ahrend \mf\ die unter {\tt defaultbase} genannte verwendet.
- (\bs\file{mf}\bs\file{bases}\bs)
- \item [\tt inputpaths] besteht in der Regel aus einer Liste von
- Pfaden, in denen nach Input-Dateien (\verb|*|\file{.MF}) gesucht werden soll.
- (\bs\file{mf}\bs\file{inputs}\bs)
- \item [\tt gfpath] in diesen Ordner werden die GF-Dateien geschrieben.
- (\bs\file{mf}\bs)
- \item [\tt tfmpath] ist der Ort, wo die TFM-Datei abgelegt wird.
- (\bs\file{mf}\bs)
- \item [\tt logpath] dorthin kommt die LOG-Datei. (\bs\file{mf}\bs)
- \item [\tt dumppath] ist der Ordner, in den \inimf\ die Base-Datei
- schreibt, wenn `dump' befohlen wurde. (\bs\file{mf}\bs\file{bases}\bs)
- \end{description}
-
- Auf der rechten Seite des {\tt `='} steht jeweils der Pfad, in dem nach der
- entsprechenden Datei gesucht wird. Dieser Pfad sollte in der Regel
- absolut angegeben werden, damit \mf\ die Dateien auch dann findet, wenn
- es von einem anderen Directory oder Laufwerk aus gestartet wurde. Ein
- Punkt (`\file.') ist auch ein g"ultiger Pfad, er bezeichnet das aktuelle
- Directory. Wenn dies nicht explizit in der Setup-Datei angegeben ist,
- sucht \mf\ {\em nicht\/} automatisch im aktuellen Directory nach
- einer Datei. Mit Ausnahme von {\tt poolfile} und {\tt defaultbase}
- (dies sind ja Dateinamen und keine Pfade) d"urfen alle Pfade wahlweise
- mit oder ohne `\verb|\|' am Ende angegeben werden. Bei {\tt
- basepaths} und {\tt inputpaths} d"urfen mehrere Pfade, jeweils getrennt durch
- ein Komma, definiert werden. \mf\ durchsucht dann in der vorgegebenen
- Reihenfolge alle Pfade, bis es die Datei gefunden hat. Jede
- Pfad-Definition mu"s mit einem Strichpunkt abgeschlossen werden.
- Zwischen Gro"s- und Kleinschreibung wird nicht unterschieden.
-
- Wie in Abschnitt~\ref{larc} bereits angedeutet, kann man bei den
- {\tt inputpaths} auch komprimierte Dateien (Larc-Archive) angeben, diese
- m"ussen die Extension \file{.lzs} besitzen. Im Prinzip werden die
- Larc-Archive von \mf\ wie ein Dateiverzeichnis angesehen, allerdings
- mit der Einschr"ankung, da"s keine Unterverzeichnisse verwendet werden
- d"urfen (im Larc-Archiv d"urfen also nur Dateinamen, keine Pfade
- abgespeichert werden).
-
- Um zu vermeiden, da"s der Benutzer mit steigender Anzahl an
- \mf-Zeichens"atzen eine undurchschaubar lange Liste an {\tt inputpaths}
- angeben mu"s, wurde au"serdem die M"og"-lichkeit vorgesehen, sogenannte
- Wildcards zu verwenden. Dazu k"onnen in den {\tt inputpaths} die
- \gemdos-"ublichen Zeichen Stern und Fragezeichen (\verb|*|, \verb|?|)
- mit der ebenso "ublichen Bedeutung (beliebig viele Zeichen bzw. genau
- ein Zeichen, nur in letztem Pfad-Teil erlaubt, etc.) verwendet werden.
- Bei Pfaden mit Wildcards (und nur da) kommt es auch darauf an, ob der
- Pfad mit einem Backslash (\verb|\|) abgeschlossen ist oder nicht: Pfade
- mit Backslash am Ende betreffen n"amlich ausschlie"slich Directories,
- {\bf keine} Archive. Damit ist es m"oglich, in einem Verzeichnis, das
- sowohl Unterverzeichnisse als auch \file{lzs}-Archive enth"alt, mit
- \verb|...\*|\file.\verb|*\| zuerst alle Unterverzeichnisse und dann mit
- \verb|...\*|\file{.lzs} alle Archive auszuw"ahlen, so da"s zuerst die
- ausgepackten Dateien in den Verzeichnissen untersucht werden, und erst,
- wenn dort nichts gefunden wurde, auf die komprimierten Archive
- ausgewichen wird.
-
-
- %
- %--------------------------- Kommandozeile ---------------------------------
- %
- \section{Kommandozeile}
- \mf\ wurde so implementiert, da"s es als \gem-Programm vom Desktop aus
- m"oglichst einfach gestartet werden kann. Viele Benutzer verwenden jedoch
- lieber eine Shell, die ihnen manche Tipparbeit ersparen kann. Als erstes
- sei hier die hervorragende \TeX-Shell von Klaus Heidrich, Robert Kie"sling
- und Reinhard Maluschka genannt, die dem Paket ebenfalls beiliegt.
- Mancher bevorzugt aber auch textorientierte Shells, die meist an UNIX oder
- MS-DOS angelehnt sind. Um die Verwendung solcher Shells (sowohl \gem- als
- auch textorientierte) zu erm"oglichen,
- wurden einige Optionen definiert, die in der Kommandozeile angegeben werden
- k"onnen. Parameter ({\it Dateiname\/} bzw.\ {\it Zahl\/}) d"urfen durch ein
- Leerzeichen von der Option getrennt werden. Verschiedene Optionen
- {\em m"ussen\/} durch ein Leerzeichen voneinander getrennt werden.
- \begin{description}
- \item[-j] \quad Wenn \mf\ seine Arbeit beendet hat, wird normalerweise ein
- akustisches Weck-Signal ausgegeben und gewartet,
- bis der Benutzer durch einen Tastendruck signalisiert, da"s er wieder
- aufgewacht ist und alle wichtigen und unwichtigen Mitteilungen auf dem
- Bildschirm gelesen hat. Wenn man jedoch mit der \TeX-Shell oder einer
- Batchdatei z.B. w"ahrend der Nacht gleich mehrere Zeichens"atze
- hintereinander erzeugen will, w"are es unpraktisch, wenn man alle zehn
- Minuten zum Computer rennen m"usste, nur um auf eine Taste zu dr"ucken.
- Das kann der Computer schlie"slich auch selber machen. Mit der Option
- {\tt -j} kann man \mf\ mitteilen, da"s es die Nacht- (oder Tag-) Ruhe
- nicht durch Gebimmel unterbrechen soll, und da"s es am Ende nicht auf
- eine Taste warten soll, da sowieso niemand die Kommentare auf dem
- Bildschirm lesen will.
-
- Wenn w"ahrend des \mf-Laufes ein fataler Fehler oder Speichermangel
- auftritt, wird die Sache etwas komplizierter. Die folgende
- Beschreibung kann ohne Probleme "ubersprungen werden, wenn man beachtet,
- da"s der \verb|nonstopmode| (oder gar \verb|batchmode|) nur dann
- eingeschaltet sein sollte, wenn \mf\ l"angere Zeit unbeaufsichtigt
- (z.B. "uber Nacht) laufen soll. Falls bei einem solchen "`Batchlauf"'
- Probleme auftauchen, sollte der erste Schritt darin bestehen, den
- \verb|nonstopmode| wieder auszuschalten (\TeX-Shell: siehe Dialogbox
- im \mf-Teil unter "`\verb|P zus. Parm.|"')!
-
- Bei fatalen Fehlern und Speicherproblemen (R"uckgabewerte 3 und 6) wartet
- \mf\ auf einen Tastendruck, auch wenn die "`Silent-Option"' \verb|-j|
- aktiviert wurde. Dies l"a"st sich nur dadurch vermeiden, da"s man \mf\
- im \verb"nonstopmode" oder \verb"batchmode" laufen l"a"st (das sind
- eingebaute \mf-Befehle). Das kann zum Beispiel dann sinnvoll sein, wenn
- man den Rechner "uber Nacht laufen l"a"st, und die Shell auch bei fatalen
- Fehlern (z.B. mehr als 100 normale Fehler, capacity exceeded, aber auch
- Platte voll, nicht gen"ugend Speicher!) weitermachen soll. Leider ist es
- bei manchen "`fatalen Fehlern"' nicht m"oglich, die Fehlerursache in die
- Logdatei zu schreiben (z.B. wenn die Platte voll ist), so da"s im
- \verb|nonstopmode| oder \verb|batchmode| der nur auf dem Bildschirm
- erscheinende Fehlerhinweis sofort wieder verschwindet. In diesem Fall
- sollte man (z.B. am n"achsten Morgen) den entsprechenden Zeichensatz
- nochmal unter Aufsicht und ohne \verb|nonstopmode| erzeugen, so da"s man
- die Fehlermeldung auf dem Bildschirm betrachten kann.
-
- Fatale Fehler, die bereits unmittelbar beim Programmstart auftreten (z.B.
- Fehler in Setup-Datei, Speichermangel) lassen sich jedoch auch mit einem
- \verb|nonstopmode| oder \verb|batchmode| nicht "uberspringen, weil die
- entsprechenden \mf-Befehle zu diesem Zeitpunkt noch gar nicht ausgewertet
- sind. In diesen F"allen ist es aber meistens sowieso nicht sehr sinnvoll,
- noch weiterarbeiten zu wollen, da sie auch bei jedem weiteren
- Programmstart wieder auftreten w"urden.
- \item[-s {\it Dateiname\/}] \quad \mf\ soll die Pfaddefinitionen aus der
- Datei {\it Da\-tei\-na\-me\/} lesen. Ohne Angabe dieser Option sucht \mf\ nach
- der Datei \file{MFSETUP} im aktuellen Directory. Wenn eine Setup-Datei
- nicht gefunden wird, dann werden die im vorigen Abschnitt angegebenen
- Standardpfade verwendet. Bei Verwendung der \TeX-Shell in der momentanen
- Version empfehle ich jedoch, immer die Datei \file{MFSETUP} zu verwenden,
- und dort auch alle Pfade zu definieren, sonst kann es zu Problemen im
- Zusammenspiel der verschiedenen Programme kommen (in zuk"unftigen
- Versionen der \TeX-Shell wird es vielleicht ein Telepathie-Modul geben,
- das die Gedanken des Benutzers liest und daraus die gew"unschten
- Pfade ableitet\dots).
- \item[-e {\it Zahl\/}] \quad Bei Verwendung der \TeX-Shell ist es durch diese
- Option m"oglich, direkt aus der Fehlerbehandlung in \mf\ durch Eingabe
- von `{\tt e}' einen Editor zu starten, der sofort die fehlerhafte Datei
- l"adt und in die entsprechende Zeile springt (sofern der Editor "ahnlich
- wie Tempus Dateiname und Zeilennummer in der Kommandozeile akzeptiert).
- Wie funktioniert nun das Ganze? \mf\ interpretiert die {\it Zahl\/} als
- Adres\-se im Hauptspeicher und erwartet dort einen Speicherbereich von
- mindestens 270 Zeichen, der mit dem nullterminierten String
- `\verb|TEXSHELL|' vorbesetzt ist. Wenn der Benutzer nun eine Fehlermeldung
- mit `{\tt e}' beantwortet, schreibt \mf\ den Namen der gerade bearbeiteten
- Datei und durch ein Leerzeichen davon getrennt die aktuelle Zeilennummer
- in diesen Speicherbereich (dabei wird die Zeichenfolge \verb|"TEXSHELL"|
- "uberschrieben). Diese Informationen kann das aufrufende Programm
- auswerten und anschlie"send den Editor starten.
- \item[-w {\it Zahl\/}]
- \item[-h {\it Zahl\/}] \quad Diese beiden Werte geben die Breite
- und H"ohe des Grafik-Puffers in Pixeln an. Standard ist 640 mal
- 400 Pixel. Siehe auch die Beschreibung der beiden Environment-Va\-ria\-blen
- \env{MF\_SCREENWIDTH} und \env{MF\_SCREENHEIGHT} in Abschnitt~\ref{environment}.
- Wenn sowohl Environment-Va\-ria\-ble als auch die Kommandozeilen-Option
- angegeben sind, werden die Werte aus der Kommandozeile verwendet.
- \end{description}
- Wenn man eine Option eingibt, die \mf\ nicht kennt, wird eine Hilfsseite
- ("`Usage"') ausgegeben, in der nochmal die genaue Verwendung der Optionen
- erkl"art ist.
-
- Man kann \mf\ entweder als \gem-Programm starten oder durch "Andern
- der File-Extension auf \file{.ttp} oder \file{.tos} als \tos-Programm,
- wobei dann die gesamte Text-Ein/Ausgabe "uber \gemdos\ l"auft
- und somit auch etwas schneller als "uber \gem. Da die Erkennung des
- eigenen Programmnamens nicht hundertprozentig sicher ist, kann man
- das auch "uber die Environment-Variable \verb|MF_NOGEM| umschalten,
- mehr dazu in Abschnitt~\ref{environment}.
-
- Zus"atzlich zu den eben beschriebenen Optionen kann man bereits in der
- Kommandozeile eine Startzeile eingeben. Doch dazu erstmal eine Erkl"arung,
- was mit Startzeile gemeint ist. Wenn \mf\ vom Desktop aus gestartet
- wird, meldet es sich mit zwei Sternen (`$**$'). Damit l"a"st es erkennen,
- da"s es auf die Eingabe der Startzeile wartet (die normale Eingabezeile
- beginnt mit einem einfachen Stern). Die Besonderheiten, die f"ur die
- Startzeile gelten, werden im Kapitel~\ref{kap-erste} n"aher
- erl"autert. Diese Startzeile kann man nun bereits in der Kommandozeile
- angeben, und zwar {\em nach\/} den Optionen. Es w"are zwar sehr ungew"ohnlich,
- aber falls die Startzeile zuf"allig mit einem Minuszeichen (`-') beginnen
- sollte, mu"s man diese erstmal durch zwei Minuszeichen von den Optionen
- abtrennen. Eine Kommandozeile sieht also ganz allgemein so aus:
- $$\hbox{\file{METAFONT.PRG} [{\it Optionen\/}] [-{}-] [{\it Startzeile\/}]}$$
-
- Falls man die Startzeile bereits in der Kommandozeile angibt, sollte man
- beachten, da"s manche Shells zun"achst alle Buchstaben in Gro"sbuchstaben
- umwandeln, w"ahrend die Kommandos in \mf\ in der Regel klein geschrieben
- sind (die bekannteste Shell mit diesem Verhalten ist wohl der \gem-Desktop,
- der allerdings f"ur \gem-Programme normalerweise keine Kommandozeile
- vorsieht). Also entweder eine "`vern"unftige"' Shell verwenden oder die
- Startzeile erst in \mf\ (nach den zwei Sternen) eingeben.
-
- Da in \mf\ der Backslash (`\bs') als Sonderzeichen definiert ist, darf er
- in Datei\-na\-men in der Regel nicht verwendet werden (Ausnahmen: wenn \mf\ den
- Benutzer explizit zur Eingabe eines Dateinamens auffordert sowie bei der
- `{\tt -s}'-Option). Um Dateien
- trotzdem mit einem Pfad versehen zu k"onnen, wurde der einfache
- Schr"agstrich (`/') als Ersatzzeichen gew"ahlt (man ist damit auch dem
- Filesystem von UNIX ein kleines -- wenn auch unbedeutendes -- St"uck n"aher).
- Vor dem "Offnen einer
- Datei wird dieses Zeichen wieder in einen Backslash zur"uckverwandelt,
- damit \gemdos\ korrekt arbeiten kann. Generell l"a"st sich dazu aber sagen,
- da"s man zumindest in den Eingabedateien auf Pfadangaben m"oglichst
- verzichten sollte, denn portabel ist sowas nat"urlich nicht. Schon der
- Nachbar hat auf seinem Atari~ST mit sehr gro"ser Wahrscheinlichkeit
- eine andere Directory-Struktur, ganz zu schweigen von anderen
- Computersystemen, wo Pfade m"oglicherweise ganz anders aufgebaut sind.
-
-
- %
- %----------------------- Environment-Variablen --------------------------
- %
- \section{Environment-Variablen}\label{environment}
-
- Einige grundlegende Einstellungen von \mf\ kann man mit einer Reihe von
- En\-vi\-ron\-ment-Variablen t"atigen. In den meisten Shells (z.B. in Gemini)
- kann man dies mit dem \verb|setenv|-Befehl angeben, es gibt aber auch
- Programme, die bei jedem Einschalten des Rechners das Environment einstellen.
-
- \begin{description}
- \item[\benv{MF\_RESOURCE} {\it Dateiname\/}] \quad \mf\ sucht seine
- Resource-Datei im AES-Stan"-dard"-pfad (meist das aktuelle Verzeichnis).
- Wenn sie dort nicht gefunden wurde, versucht \mf, seinen eigenen
- Standort (also das Verzeichnis, von dem aus das Programm geladen wurde)
- ausfindig zu machen und sucht dort nach einem \file{METAFONT.RSC}.
- Da es Situationen geben kann, in denen \mf\ seinen Programmnamen
- und Standort nicht findet, wurde die M"oglichkeit geschaffen, den
- Ort der Resource-Datei "uber diese Environment-Variable anzugeben.
- \item[\benv{MF\_NOGEM} {\it Zahl\/}] \quad In manchen F"allen kann es
- sinnvoll oder zumindest w"unschenswert sein, wenn \mf\ keine Ausgabe
- in \gem-Fenster macht, sondern nur die \gemdos-Ein/Ausgabe verwendet.
- Wenn diese Environment-Variable auf \verb|"1"| gesetzt ist, oder
- wenn die Extension des Programmnamens \file{.ttp} oder \file{.tos}
- ist (und die Suche nach dem eigenen Namen geklappt hat), wird
- keine einzige AES- oder VDI-Funktion aufgerufen, s"amtliche
- Textein- und ausgaben laufen "uber \gemdos, daf"ur ist allerdings
- auch keine Grafikausgabe mehr m"oglich.
- \item[\benv{MF\_TEXTWIND} {\it x y Breite H"ohe\/}] \quad
- Mit dieser Variable kann man die Fensterposition und -gr"o"se des
- Textfensters beim Programmstart angeben. Dabei wird
- eine Folge von maximal vier durch Leerzeichen voneinander getrennten
- Zahlen genannt, die nacheinander die gew"unschte x- und y-Position
- sowie Breite und H"ohe des Fenster-{\em Inneren} in Pixeln bedeuten.
- Werte, die zu klein, zu gro"s oder gar nicht angegeben sind, werden
- mit den Maximalwerten belegt: {\it x} und {\it y} so, da"s die linke
- obere Ecke des Textfensters in der linken oberen Ecke des Desktops
- liegt, {\it Breite\/} und {\it H"ohe\/} mit den Abmessungen des
- Desktops (abz"uglich des Fensterrahmens), h"ochstens aber 25~Zeilen
- bzw.\ 80~Zeichen (es werden Zeichenbreite und -h"ohe des aktuellen
- Systemzeichensatzes zur Berechnung herangezogen).
-
- Zum Beispiel kann man mit \verb|setenv MF_TEXTWIND "0 0 640 200"|
- angeben, da"s das Textfenster anf"anglich zwar links oben steht,
- aber auf dem normalen SM124-Schwarz"-wei"s-Monitor von Atari nur
- die obere H"alfte des Bildschirms ausf"ullt.
-
- \item[\benv{MF\_GRAPHWIND} {\it x y Breite H"ohe x-Offset y-Offset\/}] \quad
- F"ur die ersten vier Parameter gilt das f"ur \env{MF\_TEXTWIND} gesagte,
- bezogen auf das Grafikfenster. Die Maximalgr"o"se ist die Gr"o"se des
- Grafikpuffers (640 mal 400 bzw.\ die Werte der n"achsten beiden
- Environment-Variablen).
-
- Die beiden zus"atzlichen Zahlen geben den anf"anglichen Offset der linken
- oberen Ecke des Fensters von der linken oberen Ecke des Fensterinhaltes an.
- Will man beim Programmstart also den Grafik-Puffer ganz links oben sehen,
- h"angt man noch \verb|" 0 0"| oder gar nichts (weil das die
- Standard-Einstellung ist) an den Environment-String an.
- \verb|" 100 200"| sagt, da"s man die 100~Pixel am linken Rand und die
- 200~Pixelzeilen am oberen Pufferrand "`"uberspringen"' (d.h. nicht im
- Fenster sehen) will. Wenn die Werte zu gro"s sind, wird der maximal
- m"ogliche Wert genommen.
- Man kann also z.B. bei einem $640\times400$-Puffer die Werte \verb|" 700 500"|
- angeben, und hat dann auf jeden Fall die rechte untere Grafikpuffer-Ecke
- im Fenster.
- \item[\benv{MF\_SCREENWIDTH} {\it Zahl\/}]
- \item[\benv{MF\_SCREENHEIGHT} {\it Zahl\/}] \quad
- S"amtliche Grafikausgaben gehen zun"achst in einen internen Puffer,
- der im Normalfall $640\times400$~Pixel gro"s ist. Das
- Grafikfenster auf dem Bildschirm stellt einen Ausschnitt aus diesem
- Puffer dar. Wenn man einen Gro"s"-monitor verwendet oder oft sehr gro"se
- \mf-Zeichen erzeugt, kann man den Grafikpuffer vergr"o"sern, indem
- man die Environment-Variablen \env{MF\_SCREENWIDTH} und
- \env{MF\_SCREENHEIGHT} mit der gew"unschten Zahl der Pixel (horizontal
- bzw.\ vertikal) belegt. Der Nachteil dieser Angelegenheit ist der
- gr"o"sere Speicherbedarf ($\hbox{Breite}\times\hbox{H"ohe}/8$~Bytes).
-
- Wenn zus"atzlich in der Kommandozeile die Optionen \verb|-w| oder
- \verb|-h| verwendet wurden, so gelten die dort angegebenen Werte.
-
- {\bf ACHTUNG}: Mit diesen Variablen "andert man ausschlie"slich
- die Ausma"se des Grafikpuffers. Wieviel davon \mf\ f"ur seine
- Grafikausgabe verwendet, ist eine andere Sache. Bei Benutzung der
- Plain-Makros m"ussen deshalb noch die Variablen {\tt screen\_cols} und
- {\tt screen\_rows} ge\-"an\-dert werden (die Werte werden z.B. in
- \file{ATARI.MF} gesetzt), eventuell mu"s auch noch das {\tt openit}-Makro
- ge"andert werden. Am besten liest man nach \file{ATARI.MF} noch
- eine weitere Datei, z.B. \file{LOCAL.MF} ein, in der solche
- "Anderungen untergebracht werden. Letzten Endes sind die im
- "`primitiven \mf-Befehl"' {\tt openwindow} angegebenen Werte
- f"ur \mf s Vorstellung von der Gr"o"se des Grafikpuffers
- verantwortlich.
-
- Technischer Hinweis f"ur "`Insider"': Da {\tt screen\_cols} und
- {\tt screen\_rows} keine in \mf\ eingebauten Variablen sind, kann
- und vor allem darf \mf\ diese nicht von sich aus ver"andern.
- Darum ist es nicht m"oglich, hier automatisch die verwendete
- Grafikpuffer-Gr"o"se einzutragen. Eine Alternative w"are es, die
- \mf-Syntax um zwei weitere eingebaute Variablen zu erweitern, die
- bei Programmstart mit der Puffergr"o"se initialisiert werden. Man
- k"onnte dann "uber {\tt everyjob} die Plain-Variablen
- {\tt screen\_cols} und {\tt screen\_rows} ver"andern. Dummerweise
- gibt es aber keinen Variablennamen, der ausschlie"slich f"ur \mf\
- reserviert w"are. Es kann also bei jedem beliebigen Variablennamen
- passieren, da"s ein Anwender genau diesen Namen schon in seinem
- Programm verwendet hat, womit die Kompatibilit"at nicht mehr
- gew"ahrleistet w"are. Vorschl"age hierzu sind sehr willkommen.
- \item[\benv{MF\_EXTCHARSET} {\it Zahl\/}] \quad
- Wenn die Variable \env{MF\_EXTCHARSET} auf \verb|"1"| gesetzt
- wird, dann stellt \mf\ die Umlaute und andere Zeichen oberhalb von 127
- nicht mehr in der Ersatzdarstellung \verb|^^|$xx$ (z.B. \verb|^^84| f"ur
- "`"a"') dar, sondern direkt als Umlaut bzw.\ das entsprechende Sonderzeichen.
- Diese speziellen Zeichen k"onnen allerdings nur in Strings, Kommentaren
- und in Dateinamen verwendet werden, in allen anderen F"allen beschwert
- sich \mf\ "uber ein "`\verb|invalid character|"'. Achtung:
- \env{MF\_EXTCHARSET} wird nur von \inimf\ ausgewertet und in die
- Base-Datei geschrieben. Um das Verhalten von \mf\ zu beeinflussen, mu"s
- mit \inimf\ eine entsprechende Base-Datei erzeugt werden.
-
- Wer also die Umlaute auch in der Ausgabe als solche sehen m"ochte, sollte
- die Environ\-ment-Va\-riable \env{MF\_EXTCHARSET} auf \verb|"1"| setzen, um
- dann mit der \TeX-Shell durch An\-w"ah\-len des Buttons "`\verb|IniMF|"' eine
- neue Base-Datei zu erzeugen. F"ur \mf\ selbst ist es dann v"ollig
- unerheblich, wie \env{MF\_EXTCHARSET} gesetzt ist, solange die richtige
- Base-Datei verwendet wird.
-
- F"ur die Experten hier noch eine etwas genauere Erkl"arung: Normalerweise
- untersucht \mf\ jedes einzelne eingelesene Zeichen, ob es g"ultig
- ist. Nur beim Einlesen von Strings, Dateinamen (nach
- \verb|input|) und Kommentaren wird dieser Test au"ser Kraft gesetzt. In
- diesen drei F"allen kann also praktisch jedes beliebige Zeichen verwendet
- werden, unabh"angig davon, ob mit der Environment-Variablen
- \env{MF\_EXTCHARSET} ein erweiterter Zeichensatz aktiviert wurde oder
- nicht. Erst bei der Ausgabe dieser Zeichen tritt ein Unterschied zu Tage:
- Ein Standard-\mf\ gibt diese Zeichen in einer Ersatzdarstellung aus,
- z.B. ein "`"a"' als "`\verb|^^84|"' (das ist der Hexadezimalcode mit
- zwei \verb|^| davor). Durch Setzen von \env{MF\_EXTCHARSET} kann diese
- Umwandlung unterdr"uckt werden, so da"s auch ein ganz normales "`"a"' wieder
- ausgegeben wird. Allerdings wird diese Ausgabe-Umwandlungstabelle (als
- Teil des Stringpools) in der Base-Datei abgespeichert, die von \inimf\
- erzeugt wird. Ob also ein "`"a"' in der Eingabe als "`"a"' oder als
- "`\verb|^^84|"' in der Ausgabe erscheint, h"angt einzig und allein davon
- ab, wie \env{MF\_EXTCHARSET} gesetzt war, als die Base \file{plain.bse}
- mit \inimf\ (mit dem Kommando \verb|dump|) erzeugt wurde.
-
- Mutige k"onnen sich eine Base-Datei auch direkt mit einem Editor ansehen,
- um herauszufinden, ob sie Umlaute direkt oder in der Ersatzdarstellung
- definiert. Dazu mu"s man nur die 128 Zeichen vor dem String \verb|pencircle|
- anschauen: enthalten sie die Zeichen "`{\tt \c C"u\'e\^a"a} \dots\
- $\sqrt{ }{}^n{}^2{}^3${\tt \={ }}"', sind die Umlaute aktiviert,
- ansonsten stehen dort die Ersatzdarstellungen "`\verb|^^c0^^c1| \dots\
- \verb|^^fe^^ff|"'.
- \item[\benv{ARGV}] \quad Wird f"ur die erweiterte Kommandozeile
- (\env{ARGV}-Verfahren) benutzt und sollte vom Benutzer nicht ver"andert
- werden. Eine genaue Beschreibung findet man in
- der Datei \file{EXARG.DOC}, "`GEMDOS Extended Argument
- (ARGV) Specification"' im \file{DOC}-Ordner.
- \end{description}
-
- %
- %--------------------- Rueckgabewerte von METAFONT --------------------------
- %
- \section{R"uckgabewerte von \protect\mf}
-
- Jedes Programm gibt an das aufrufende Programm eine Zahl zur"uck, den
- R"uckgabewert. Mit Hilfe dieses Wertes kann man mit den meisten Shells
- eventuell aufgetretene Fehler oder besondere Ereignisse w"ahrend des
- Programmlaufes erkennen und entsprechend darauf reagieren. Es ist "ublich,
- da"s bei einem fehlerfreien Lauf die Zahl Null zur"uckgegeben wird. Da
- bei der Erzeugung eines Zeichensatzes eine ganze Menge ungew"ohnliches
- passieren kann, wurden f"ur \mf\ sechs weitere Werte definiert ("ubrigens
- gelten genau die gleichen Konventionen auch f"ur das \TeX\ von Stefan
- Lindner). Im folgenden also eine vollst"andige Liste der Werte, die \mf\
- an das aufrufende Programm zur"uckgeben kann:
- \begin{description}
- \item[0 -- no error] Es lief alles zur vollsten Zufriedenheit von \mf.
- \item[1 -- warning] W"ahrend des Programmlaufes wurde mindestens eine
- Warnung ausgegeben, es wurden jedoch keine ernsthaften Fehler gefunden.
- \item[2 -- error] Mindestens ein Fehler ist aufgetreten, die Arbeit wurde
- aber korrekt beendet, die erzeugten Daten sind (eventuell beschr"ankt)
- verwendbar.
- \item[3 -- fatal error] \mf\ mu"ste wegen eines fatalen Fehlers abgebrochen
- werden, die erzeugten Dateien sind h"ochstwahrscheinlich unvollst"andig.
- Dies kann z.B. passieren, wenn \mf\ keine oder nur eine fehlerhafte
- Base-Datei finden konnte, wenn mehr als 100 normale Fehler aufgetreten
- sind, ein interner Fehler\footnote{ist zwar unwahrscheinlich, aber nie
- v"ollig auszuschlie"sen! In diesem Fall bitte ich um sofortige
- Benachrichtigung zusammen mit einer m"oglichst genauen Fehlerbeschreibung}
- entdeckt wurde oder der interne Speicher (siehe Speicherverwaltung)
- "ubergelaufen ist.
- \item[4 -- edit] Der Benutzer hat bei einem aufgetretenen Fehler oder einer
- Unterbrechung (Interrupt) ein `{\tt e}' eingetippt. Wenn mittels der
- `{\tt -e}'-Option ein Speicherbereich spezifiziert wurde, schreibt \mf\
- in diesen den Namen der aktuellen Eingabedatei und die Zeilennummer.
- \item[5 -- exit] Wenn der Benutzer in der Fehlerbehandlung ein `{\tt x}'
- eintippt oder w"ahrend einer Eingabe die Escape-Taste bet"atigt, dann wird
- dieser Wert zur"uckgeliefert.
- \item[6 -- low memory] Zeigt an, da"s der freie Hauptspeicher (RAM) nicht
- ausreicht, um \mf\ starten zu k"onnen (siehe Speicherverwaltung).
- Abhilfe schafft nur entweder das Entfernen nicht ben"otigter residenter
- Programme oder der Kauf von mehr Speicher.
- \end{description}
-
-
- %
- %------------------------ Speicherverwaltung --------------------------
- %
- \section{Speicherverwaltung}
- Beim Programmstart fordert \mf\ einen konstanten Speicherbereich ("`interner
- Speicher"') vom Betriebssystem an, in den es alle Variablen speichern kann.
- Dieser Speicher ist in verschiedene Bereiche aufgeteilt (z.B. f"ur Strings,
- Eingabepuffer, verschiedene Kernings, "`main memory"' f"ur Zahlen, Pfade,
- Pens, Transformationsmatrizen usw.). Wenn das
- Betriebssystem diesen Speicher nicht zur Verf"ugung stellen kann (wegen
- residenter Programme, RAM-Disk o."a.), wird der R"uckgabewert~6
- zur"uckgeliefert.
- Wenn \mf\ jedoch w"ahrend der Arbeit feststellt, da"s einer der Bereiche
- im internen Speicher zu klein ist (z.B. bei endlos rekursiven Makros, zu
- vielen Strings, zu langen Zeilen, \dots), so
- meldet es "`\verb|capacity exceeded|"' zusammen mit der Angabe, welcher
- Bereich gesprengt wurde. In diesem Fall kann der Benutzer nur versuchen,
- sparsamer mit den Ressourcen umzugehen (das sagt sich nat"urlich leicht,
- aber es ist kaum m"oglich, hier konkretere Hinweise zu geben; ein paar Tips
- kann man noch im \mf book\cite{mfbook} von Knuth finden). Im
- "au"sersten Notfall kann man auch bei mir anfragen, ob es m"oglich ist,
- den entsprechenden Bereich zu vergr"o"sern; das h"atte jedoch auf jeden
- Fall eine "Anderung des Programmes zur Folge, so da"s man auf diese
- M"oglichkeit nur zur"uckgreifen sollte, wenn man sich sicher ist, da"s
- eine andere L"osung nicht m"oglich oder nicht vertretbar ist.
-
- F"ur "`Insider"' sind in Tabelle~\ref{tab-konst} die Werte der wichtigsten
- Konstanten von \mf\ angegeben, so wie sie in dieser Implementation
- gew"ahlt wurden. Eine ausf"uhrliche Erkl"a"-rung dieser Variablen findet man
- in~\cite{mfprog}.
- \begin{table}[htbp]\begin{center}
- \begin{tabular}{|l|l|r|}
- \hline
- main memory size & {\it mem\_max = mem\_top} & 65\,534 \\
- & {\it mem\_min = mem\_bot} & 0 \\
- number of internals & {\it max\_internal} & 100 \\
- buffer size & {\it buf\_size} & 2000 \\
- error messages & {\it error\_line} & 72 \\
- & {\it half\_error\_line} & 42 \\
- text output width & {\it max\_print\_line} & 79 \\
- graphics screen size & {\it screen\_width} & variabel (640) \\
- & {\it screen\_depth} & variabel (400) \\
- input stack & {\it stack\_size} & 30 \\
- number of strings & {\it max\_strings} & 2\,500 \\
- string pool size & {\it pool\_size} & 40\,000 \\
- & {\it string\_vacancies} & 8\,000 \\
- GF file buffer & {\it gf\_buf\_size} & 800 \\
- file names & {\it file\_name\_size} & 250 \\
- TFM header words & {\it header\_size} & 100 \\
- ligature/kern steps & {\it lig\_table\_size} & 5000 \\
- distinct kern amounts& {\it max\_kerns} & 500 \\
- {\bf fontdimen} parameters & {\it max\_font\_dimen}& 50 \\
- symbolic tokens & {\it hash\_size} & 2\,100 \\
- input files & {\it max\_in\_open} & 12 \\
- macro parameters & {\it param\_size} & 150 \\ \hline
- \end{tabular}
- \caption{\mf-Konstanten} \label{tab-konst}
- \end{center}\end{table}
-
- %
- %***************************** INIMF ***************************************
- %
- \chapter{INIMF}\label{kap-inimf}
-
- Auf der Programmdiskette befinden sich zwei unterschiedliche Versionen von \mf:
- \file{METAFONT.PRG} und \file{INIMF.PRG}. Dabei ist ersteres f"ur die t"agliche
- Arbeit gedacht; \inimf\ wird im allgemeinen nur zur Erzeugung von
- Base-Dateien (\file{.BSE}) ben"otigt. Wer bereits die Format-Dateien
- (\file{.FMT}) von \TeX\ kennt, kann den n"achsten Absatz "uberspringen, denn
- die Base-Dateien bei \mf\ entsprechen genau den Format-Dateien bei \TeX.
-
- Beim Programmstart m"ussen sehr viele Variablen initialisiert und der
- sogenannte "`String-Pool"' (Datei \file{MF\_POOL}) mit allen
- vordefinierten Strings eingelesen werden. Au"serdem wird fast jeder
- Benutzer zumindest die Makros aus der Datei \file{PLAIN.MF} verwenden,
- da die sogenannten "`primitives"' -- also die Befehle des "`nackten"'
- \mf\ ohne Plain-Makros -- so primitiv sind (wie der Name schon sagt),
- da"s man sehr viel tippen m"u"ste, um nur ein paar einfache Sachen auf
- den Bildschirm zu bringen, geschweige denn einen ganzen Zeichensatz.
- Die "`primitives"' k"onnte man auch als die "`Maschinensprache"' von
- \mf\ bezeichnen. Wenn \mf\ bei jedem Programmstart erst diese ganzen
- Initialisierungen ausf"uhren und Makrodefinitionen einlesen m"u"ste,
- w"urde das recht lange dauern. Darum hat Knuth eine M"oglichkeit
- vorgesehen, diese Initialisierungen und Definitionen nach einmaliger
- Ausf"uhrung in kompakter Form auf Diskette bzw.\ Platte abzuspeichern.
- Diese Datei wird Base-Datei genannt. Wenn man das einmal erledigt hat,
- braucht das Programm in Zukunft nur noch die Base-Datei einzulesen, und
- ist danach sofort startbereit.
-
- Der Unterschied zwischen \inimf\ und \mf\ besteht im wesentlichen darin,
- da"s bei \mf\ die komplette Variablen-Initialisierung und das Lesen des
- String-Pools entfernt wurde, wodurch es nicht nur schneller, sondern auch
- um einiges k"urzer als \inimf\ ist. Aus diesem Grund braucht es aber
- unbedingt eine Base-Datei, um arbeiten zu k"onnen. Und zur Erzeugung so
- einer Base-Datei braucht man eben \inimf, auch deshalb, weil der Befehl
- zum Schreiben der Base-Datei ({\tt dump}) im normalen \mf\ gar nicht
- vorhanden ist.
-
- Ein weiterer Unterschied besteht in der Berechnung einiger "`statistischer"'
- Werte w"ahrend der Arbeit. Wenn man z.B. die Variable {\it tracingstats\/}
- auf einen positiven Wert setzt, so erh"alt man am Ende der LOG-Datei einige
- Informationen dar"uber, wie stark der interne Speicher ausgenutzt wurde.
- Das Mitf"uhren und Aktualisieren solcher Zusatzinformationen kostet jedoch
- Zeit und Speicherplatz, deshalb wurden die entsprechenden Code-Teile in
- \file{METAFONT.PRG} entfernt. Wenn man diese Informationen ben"otigt,
- mu"s man auf \inimf\ zur"uckgreifen, mu"s daf"ur aber etwas mehr Zeit
- und Speicher einkalkulieren. An dieser Stelle sei nochmal betont, da"s
- man im Prinzip auch mit \inimf\ allein ausk"ame; alles, was man mit \mf\
- machen kann, funktioniert auch mit \inimf\ (vorausgesetzt, man hat gen"ugend
- Speicher zur Verf"ugung). Insbesondere kann man auch bei \inimf\ eine
- Base-Datei laden (z.B. durch Eingabe von `{\tt \&plain}' in der Startzeile).
- Lediglich wenn man keine Base-Datei in der Startzeile angibt, l"adt \mf\
- die in der Setup-Datei angegebene {\tt defaultbase}, w"ahrend \inimf\ in
- diesem Fall gar keine Base-Datei l"adt, sondern nur seine Variablen
- initialisiert und den String-Pool liest (nicht aber die Plain-Makros!).
-
- Abschlie"send nochmal eine kurze Zusammenfassung der Besonderheiten von
- \inimf:
- \begin{itemize}
- \item alle Variablen werden beim Programmstart initialisiert;
- \item der String-Pool wird gelesen (der Dateiname steht in der Setup-Datei
- unter {\tt poolfile});
- \item der Befehl {\tt dump} erzeugt eine Base-Datei;
- \item wenn in der Startzeile keine Base-Datei angegeben wird, wird auch
- keine geladen;
- \item es werden zus"atzliche Statistiken gef"uhrt. Diese erh"alt man,
- wenn $\hbox{\it tracingstats\/}>0$ bzw.\ $\hbox{\it tracingedges\/}>1$;
- \item es wird mehr Hauptspeicher ben"otigt (f"ur zus"atzlichen Programmcode
- und die statistischen Informationen);
- \item es wird mehr Rechenzeit "`verbraten"'.
- \end{itemize}
-
- %
- %********************** Erste Schritte mit METAFONT ************************
- %
- \chapter{Erste Schritte mit \protect\mf}
- \label{kap-erste}
-
- "`Aller Anfang ist schwer"', noch dazu, wenn man so komplexe und flexible
- Programme wie \TeX\ oder \mf\ vor sich hat. Um dem Anf"anger dennoch einen
- ganz kleinen Ausschnitt der M"oglichkeiten von \mf\ zu zeigen und ihm
- gleich am Anfang ein paar kleine Erfolgserlebnisse zu erm"oglichen, sind
- in diesem Kapitel ein paar Beispiele aufgef"uhrt, die am besten gleich am
- Rechner ausprobiert werden sollten. F"ur die ersten beiden Beispiele kann
- \mf\ direkt von der Programmdiskette aus gestartet werden, das dritte
- Beispiel ist am einfachsten mit einem fertig installierten \mf\
- durchzuf"uhren. Bevor ich's vergesse: beenden kann man das Programm durch
- Eingabe von `{\tt end}' oder `{\tt bye}', genauso wie \TeX\ also (wenn
- man mal davon absieht, da"s man in \mf\ kein `\bs' vor die Befehle setzen
- mu"s).
-
- %
- %-------------------- Beispiel 1: einfache Grafik --------------------------
- %
- \section{Beispiel 1: einfache Grafik}
- Im ersten Beispiel sollen ein paar Pinselstriche auf den Bildschirm gebracht
- werden. Zun"achst mu"s \mf\ gestartet werden, z.B. durch Anklicken von
- \file{METAFONT.PRG} auf dem Desktop (keine Angst, ich erkl"are jetzt nicht,
- wie man mit \gem\ umgeht). Nach der "ublichen Titelzeile meldet sich das
- Programm mit zwei Sternchen. Normalerweise kann man hier angeben, welchen
- Zeichensatz man erzeugen m"ochte, und noch viele andere Dinge. F"ur dieses
- Beispiel jedoch kann sich \mf\ "`ganz entspannt zur"ucklehnen"' und auf
- die Eingabe warten, also tippt man
- \begin{verbatim}
- \ relax
- \end{verbatim}
- ein. Zun"achst mu"s \mf\ mitgeteilt werden, da"s man die gezeichneten
- Striche gleich auf dem Bildschirm sehen m"ochte. Dies erreicht man durch
- Eingabe von
- \begin{verbatim}
- screenstrokes;
- \end{verbatim}
- (den Strichpunkt nicht vergessen!).
- Zum Zeichnen einer Linie ist die Angabe von zwei Punkten n"otig, wobei
- die Koordinaten eines Punktes als {\tt (x,y)} eingegeben werden k"onnen:
- \begin{verbatim}
- draw (10,10)..(50,30);
- \end{verbatim}
- Wenn man mehr als zwei Punkte angibt, wird eine Kurve durch alle Punkte
- gezogen (sogenannte Bezier-Kurven), z.B.
- \begin{verbatim}
- draw (10, 100)..(50,80)..(90,100);
- \end{verbatim}
- Das ist nat"urlich nur die einfachste Methode, zwei oder mehr Punkte mit
- einer Kurve zu verbinden. \mf\ kann noch sehr viel mehr, z.B. kann man
- f"ur bestimmte Punkte der Kurve eine Richtung vorgeben, mit
- "`Kontrollpunkten"' die Form der Kurve fast beliebig ver"andern,
- Schnittpunkte mit anderen Kurven definieren usw.
- Experimentieren kann man auch mit speziellen Verbindungen, indem man die
- zwei Punkte `..' durch `...' oder `-{}-' ersetzt. Um das Grafikfenster zu
- l"oschen, kann man
- \begin{verbatim}
- clearit; showit;
- \end{verbatim}
- eingeben. \verb|clearit| l"oscht dabei den Bildpuffer, \verb|showit| bringt
- den gel"oschten Puffer dann auf den Bildschirm.
-
- %
- %-------------- Beispiel 2: METAFONT als ,,Rechner'' ------------------
- %
- \section{Beispiel 2: \protect\mf\ als "`Rechner"'}
-
- Im zweiten Beispiel sollen die mathematischen F"ahigkeiten von \mf\ etwas
- ausprobiert werden. Zun"achst kann man in \mf\ (wie in fast jeder anderen
- Programmiersprache auch) Variablen definieren. Man h"atte das erste Beispiel
- auch so eingeben k"onnen:
- \begin{verbatim}
- x1 = 10; y1 = 10; x2 = 50; y2 = 30;
- draw (x1, y1)..(x2, y2);
- \end{verbatim}
- Dabei steht das Gleichheitszeichen nicht f"ur eine Zuweisung, sondern f"ur
- eine Gleichung. Der Unterschied wird klar, wenn man z.B. den Wert von $x1$
- um eins erh"ohen will. Schreibt man
- \begin{verbatim}
- x1 = x1 + 1;
- \end{verbatim}
- so beschwert sich \mf\ zu Recht, da"s diese Gleichung "`inkonsistent"'
- (d.h.\ nicht l"osbar) ist, denn es gibt nun mal keine reelle Zahl, deren
- Wert bei Addition von eins unver"andert bleibt. Will man eine Zuweisung
- erreichen, mu"s man `:=' eingeben. Richtig w"are also in diesem Fall:
- \begin{verbatim}
- x1 := x1 + 1;
- \end{verbatim}
- Interessanter ist aber wohl die Verwendung von Gleichungen. Lineare
- Gleichungssysteme sind f"ur \mf\ was ganz allt"agliches. Man h"atte die
- obigen Werte also auch so definieren k"onnen:
- \begin{verbatim}
- x1 + x2 = 60;
- 3x1 + 2x2 = 130;
- \end{verbatim}
- Man kann leicht nachpr"ufen, da"s \mf\ dieses Gleichungssystem korrekt
- gel"ost hat, wenn man
- \begin{verbatim}
- show x1, x2;
- \end{verbatim}
- eingibt.
- Interessant ist auch, da"s man nicht `{\tt 3$*$x1}' schreiben mu"s,
- sondern den Malpunkt einfach weglassen kann, so wie es wohl (nicht nur)
- jeder Mathematiker gewohnt ist. Es gibt nur sehr wenige andere
- Programmiersprachen, in denen solche Selbstverst"andlichkeiten m"oglich sind.
- Es bedarf wohl keiner besonderen Erw"ahnung, da"s f"ur \mf\ auch die
- Rechenregel "`Punkt vor Strich"' nichts Unbekanntes ist. Ansonsten bietet
- \mf\ unter anderem noch trigonometrische Funktionen, approximative (d.h.\
- n"aherungsweise) L"osung von nichtlinearen Gleichungssystemen, Vektor-
- und Matrizenrechnung. Durch die M"oglichkeit, Makros zu definieren (was
- im Prinzip den Unterprogrammen oder Prozeduren herk"ommlicher
- Programmiersprachen entspricht), kann man nat"urlich noch beliebig viele
- andere mathematische Rechenverfahren implementieren.
-
- Wer mehr "uber \mf\ erfahren m"ochte, sollte sich eines der im
- Literaturverzeichnis genannten B"ucher zu Gem"ute f"uhren. Auch das genaue
- Studium fertiger Zeichens"atze oder Logos ist wichtig, anfangen sollte man
- mit einfacheren Dingen wie z.B. das \mf-Logo im Verzeichnis \file{MF\_LOGO}
- oder das DFF-Logo von J"urgen~E.~G"unther, \file{dff.mf}. Auch die vielen
- anderen kleinen Beispiele im \file{inputs}-Ordner sind in der Regel
- relativ gut verst"andlich. An das Studium der CMR-Zeichens"atze sollte man
- sich erst sp"ater heranwagen, denn diese Zeichens"atze sind in einem
- Zeitraum von etlichen Jahren immer wieder verbessert und verfeinert worden,
- so da"s der Blick meistens durch viele Details verstellt wird.
-
- %
- %-------------- Beispiel 3: Erzeugung eines Zeichensatzes ------------------
- %
- \section{Beispiel 3: Erzeugung eines Zeichensatzes}
- Zum Schlu"s dieses Kapitels soll noch erkl"art werden, wie man mit \mf\
- komplette "`Computer Modern Roman"' Zeichens"atze erzeugen kann. Das ist
- wahrscheinlich eine der h"aufigsten Aufgaben dieses Programmes, schlie"slich
- wollen (und k"onnen) nicht alle Benutzer ihre eigenen Zeichen entwerfen,
- darum greift man in der Regel auf die fertigen Zeichens"atze von Knuth
- zur"uck, die ja auch eine lange Entwicklungszeit hinter sich haben und
- deshalb wenigstens halbwegs professionell aussehen (dennoch hat Knuth nie
- behauptet, ein Typograph zu sein, er hat sich aber bei der Entwicklung der
- Zeichens"atze von einigen Experten dieses Faches beraten lassen).
-
- Als erstes sollte man nachschauen, ob in der Datei \file{ATARI.MF} ein
- `mode\_def' f"ur den verwendeten Drucker vorhanden ist und wie dieser
- hei"st. Wenn dort der gew"unschte Dru"cker nicht angegeben ist, sollte
- man nach einem `mode\_def' suchen, dessen Auf"|l"osung der ge"-w"unsch"-ten
- m"oglichst nahe kommt oder gleich ist. In diesem Fall wird man wohl fr"uher
- oder sp"ater nicht darum herum kommen, sich einen eigenen Parametersatz zu
- definieren. Vorher sollte man aber bei mir oder Stefan Lindner anrufen,
- ob vielleicht inzwischen schon fertige Parameter existieren, es kommen fast
- t"aglich neue hinzu.
-
- Als Beispiel soll hier der Zeichensatz `{\tt cmr10}' in 1,44-facher
- Vergr"o"serung f"ur einen Laserdrucker erzeugt werden, soda"s er in einem
- \TeX-Dokument mit
- \begin{verbatim}
- \font\bigtenrm = cmr10 scaled \magstep2
- \end{verbatim}
- angesprochen werden kann. Zum "Uben oder schnellen Ausprobieren kann man
- alternativ auch einen kleinen Zeichensatz wie `{\tt logo10}' erzeugen,
- dazu mu"s im folgenden Text nur {\tt cmr} durch {\tt logo} ersetzt werden.
-
- \subsection{Erzeugen der Base-Datei}
- Zun"achst mu"s man daf"ur sorgen, da"s eine geeignete Base-Datei vorhanden
- ist. F"ur dieses Beispiel gen"ugen die Plain-Makros, also braucht man
- die Datei \file{PLAIN.BSE}. Es ist zwar auf der Programmdiskette schon eine
- fertige Datei vorhanden, dennoch soll hier kurz erl"autert werden, wie diese
- Datei erzeugt wurde (schlie"slich fallen solche Dateien ja nur "au"serst
- selten vom Himmel).
-
- Wie in Kapitel~\ref{kap-inimf} bereits erw"ahnt wurde, ben"otigt man
- f"ur diese Aufgabe das Programm \inimf. Man startet also \file{INIMF.PRG}
- und gibt in der Startzeile (durch `$**$' gekennzeichnet)
- \begin{verbatim}
- plain
- \end{verbatim}
- ein. Daraufhin werden die Plain-Makros geladen und im Speicher abgelegt.
- Wenn wieder ein `$*$' erscheint, ist \mf\ zu weiteren Untaten bereit.
- Jetzt kann man die eigenen Dateien laden, die damit bei jedem Start von
- \mf\ automatisch mitgeladen werden. F"ur den Anfang also mal
- \begin{verbatim}
- input atari
- \end{verbatim}
- um einige Werte wie Auf"|l"osung, Strichst"arke etc.\ f"ur ein paar "ubliche
- Ausgabeger"ate (z.B. {\tt stscreen}, {\tt stlaser} und {\tt starnl}) zu
- definieren.
- F"ur den Anfang gen"ugt das mal, man kann \inimf\ mitteilen, da"s
- es nun seinen Speicher "`dumpen"' soll:
- \begin{verbatim}
- dump
- \end{verbatim}
- Zur Belohnung erh"alt man ein paar neue Dateien:
- \begin{description}
- \item[\file{PLAIN.BSE}] in dem Ordner, der in der Setup-Datei unter
- {\tt dumppath} angegeben wurde. Das ist die Base-Datei, in der alle
- wichtigen Daten f"ur \file{METAFONT.PRG} enthalten sind.
- \item[\file{PLAIN.LOG}] im {\tt logpath}-Ordner. In diese Datei hat \inimf\
- s"amtliche Bild"-schirm-Aus"-ga"-ben und noch einiges mehr mitprotokolliert,
- damit man sich auch sp"ater noch ansehen kann, was das Programm alles
- angestellt hat.
- \end{description}
-
- \subsection{Die Startzeile}
- Diese Base-Datei kann man nun mit jedem der beiden Programme (\inimf\
- und \mf) ruckzuck einladen, indem man in die Startzeile
- \begin{verbatim}
- &plain
- \end{verbatim}
- (man beachte das `\verb|&|'!) eintippt. Dadurch wird die Datei
- \file{PLAIN.BSE} geladen, und man hat alles wieder so, wie es vor dem
- Eintippen von \verb|dump| war.
-
- Jetzt wird es aber doch allerh"ochste Zeit, da"s genau erkl"art wird, was
- die Startzeile ist, und welche Besonderheiten sie aufweist. Die Startzeile
- ist die erste Zeile, die man f"ur \mf\ eingibt. Eine M"oglichkeit besteht
- bereits in der Kommandozeile {\em nach\/} den Optionen. Wenn dort nichts
- eingegeben wurde, meldet sich das Programm mit zwei Sternchen (`$**$') am
- Zeilenanfang, um anzudeuten, da"s es die Startzeile erwartet (in den
- normalen Zeilen steht nur {\em ein\/} Sternchen am Zeilenanfang). In dieser
- Startzeile mu"s nun angegeben werden, welche Base-Datei geladen werden soll
- (bei \inimf\ optional), au"serdem leitet \mf\ aus dieser Zeile den
- "`Jobname"' ab, nach dem s"amtliche Ausgabedateien (GF-, TFM- und LOG-Datei)
- benannt werden. Die Besonderheiten der Startzeile sind:
- \begin{itemize}
- \item Eine Base-Datei l"a"st sich durch Voranstellen eines `{\tt \&}' vor dem
- Dateinamen laden (z.B. `{\tt \&plain}' l"adt die Base-Datei
- `\file{PLAIN.BSE}'). Wenn eine Base-Datei angegeben ist, mu"s diese
- auf jeden Fall am Anfang der Startzeile stehen.
- \item Eingabedateien (\verb|*|\file{.MF}) kann man einfach durch Angabe des
- Datei"-namens laden, w"ah"-rend man in den normalen \mf-Eingabezeilen
- `{\tt input \it name\/}' schreiben m"usste (z.B. `{\tt cmr10}' l"adt die
- Eingabedatei `\file{CMR10.MF}').
- \item Wenn man in dieser Zeile andere Sachen eingeben m"ochte, z.B.
- Initialisierungen irgendwelcher Variablen, bevor eine Datei gelesen
- wird, mu"s man mit einem `\verb|\|' auf den normalen
- Eingabemodus umschalten. Danach kann man alles machen, was man
- normalerweise (in `\verb|*|\file{.MF}'-Eingabedateien oder in Zeilen mit nur
- einem `$*$' am Anfang) machen kann. "Ublicherweise gibt man hier das
- Ausgabeger"at und eventuelle Vergr"o"serungen an, z.B.
- \begin{verbatim}
- \ mode=stlaser; mag=1.44;
- \end{verbatim}
- setzt Auf"|l"osung etc.\ auf die Werte, die im `{\tt mode\_def stlaser}'
- in der Datei \file{ATARI.MF} angegeben wurden, und vergr"o"sert den
- Zeichensatz auf 1.44-fache Gr"o"se. Will man mit diesen Werten einen
- Zeichensatz erzeugen, so m"ussen die Zuweisungen nat"urlich {\em vor\/}
- dem Laden der Source\-datei ausgef"uhrt werden (es n"utzt nichts, wenn
- \mf\ zuerst den ganzen Zeichensatz erzeugt und erst hinterher erf"ahrt,
- da"s dieser vergr"o"sert werden sollte). Da man nach Eingabe
- des \verb|\| nicht mehr im "`Startzeilen-Modus"' ist, mu"s man die
- Sourcedatei nun (wie "ublich) mit \verb|input| laden.
- \item Anhand der Startzeile bestimmt \mf\ den Jobnamen. Dabei richtet sich
- \mf\ nach der ersten Datei, die eingelesen wird (ohne Beachtung einer
- eventuell angegebenen Base-Datei), also entweder der erste Dateiname
- ohne einem `{\tt \&}' davor, oder (falls vor dem `\verb|\|' keine
- {\tt MF}-Datei eingelesen wird) die erste Datei, die nach einem
- `\verb|\|' mit {\tt input} eingelesen wird. Wenn mit den Kommandos
- in dieser Zeile "uberhaupt keine \file{MF}-Datei eingelesen wird,
- dann setzt \mf\ den Jobname auf `\file{MFPUT}'. Wenn man also
- \begin{verbatim}
- &plain f1 \ input f2
- input f3
- \end{verbatim}
- eingibt, hei"sen die Ausgabedateien `\file{F1.}xxx\file{GF}',
- `\file{F1.LOG}' und `\file{F1.TFM}', weil `\file{F1.MF}' die erste Datei
- ist, die gelesen wird (die Base-Datei wird nicht mitgerechnet, sonst
- hie"se ja alles `\file{PLAIN.}xxx').
- \end{itemize}
- Wenn man in der ersten Zeile kein Ausgabeger"at spezifiziert, dann verwendet
- \mf\ `\verb|mode = proof;|', was zwar zum Ausprobieren ganz nett aussieht
- (eigentlich sollte sich dieses Schauspiel niemand entgehen lassen, man sieht
- die Zeichen mal richtig gro"s und in hervorragender Sch"arfe auf dem Monitor),
- aber f"ur einen Ger"atetreiber in der Regel nicht so ideal ist (schon allein
- wegen der Auf"|l"osung von 2601.72 dpi). Also mu"s man das gew"unschte Ger"at
- explizit angeben, indem man in der ersten Zeile vor dem Namen der
- Eingabedatei `{\tt mode=stlaser;}' angibt. Damit nun aber \mf\ nicht nach
- der Eingabedatei `{\tt mode}' sucht, ist vor der Gleichung noch ein
- `\verb|\|' n"otig. Wenn keine Vergr"o"serung angegeben wird, ist sie
- automatisch 1. Allgemein wird die erste Zeile also ungef"ahr so aussehen:
- \begin{verbatim}
- &<Base> \ mode=<Geraet>; mag=<Vergroesserung>; input <Datei>;
- \end{verbatim}
- wobei f"ur die Namen in spitzen Klammern entsprechende Werte einzusetzen
- sind (die Klammern tippt man nat"urlich nicht mit ein).
-
- \subsection{Die "`Sch"opfung"'}
- Jetzt steht alles bereit, um den Zeichensatz zu erzeugen. Man starte also
- \file{METAFONT.PRG} und gebe als Startzeile
- \begin{verbatim}
- &plain \ mode=stlaser; mag=1.44; input cmr10
- \end{verbatim}
- ein. Nach einigen Minuten ist \mf\ fertig, und man hat ein paar weitere
- Dateien auf der Diskette / Platte:
- \begin{description}
- \item[\bfile{CMR10.432}] sollte eigentlich \file{CMR10.432GF} hei"sen, aber
- \tos\ kann
- halt leider nur drei Zeichen in der Extension speichern. Die "`krumme"'
- Zahl 432 erh"alt man, wenn man die Ger"ate-Auf"|l"osung von 300 dpi
- (dots per inch) mit der Vergr"o"serung (in diesem Fall 1.44)
- multipliziert. Das ist also nun die GF-Datei, in der die Beschreibung
- der vielen Zeichen drin ist. Wenn man einen Zeichensatz f"ur ein anderes
- Ger"at generiert hat, steht nat"urlich nicht 432, sondern die gew"ahlte
- Auf"|l"osung (Vergr"o"serung nicht zu vergessen) in der Extension,
- z.B. \file{CMR10.96G} (`\file{.96GF}' auf 3 Zeichen verk"urzt!) f"ur eine
- GF-Datei mit 96 dpi und Vergr"o"serung 1.
- \item[\bfile{CMR10.LOG}] auch hier hat \mf\ wieder fein s"auberlich
- mitprotokolliert, was es alles gemacht hat.
- \item[\bfile{CMR10.TFM}] diese Datei ben"otigt \TeX, um zu erfahren, wie
- gro"s die einzelnen Zeichen sind (wie sie tats"achlich aussehen,
- interessiert \TeX\ gar nicht, das geht einzig und allein den
- Druckertreiber etwas an). TFM steht f"ur "`\TeX\ Font Metric File"'.
- \end{description}
-
- Da die meisten Ger"atetreiber sogenannte PK-Files ("`Packed Font Files"')
- bevorzugen, mu"s man nun noch die GF-Datei in eine PK-Datei umwandeln
- (man k"onnte auch komprimieren sagen). Man startet also \file{GFTOPK.TTP}
- und gibt diesem den Namen der GF-Datei und der gew"unschten PK-Datei,
- also z.B.
- \begin{verbatim}
- cmr10.432 \prtfonts\res300.slm\mag____1.440\cmr10.pk
- \end{verbatim}
- als Kommandozeile mit auf den Weg (zum Zwecke der Demonstration sei hier
- mal davon ausgegangen, da"s die GF-Datei im aktuellen Ordner und
- die Zeichens"atze f"ur die Druckertreiber im Ordner \verb|\prtfonts|
- stehen, wobei letzterer entsprechend den Konventionen von Stefan Lindner's
- Druckertreiber-Familie aufgebaut ist). Damit ist der Zeichensatz fertig und steht
- zum Ausdrucken bzw.~Betrachten auf dem Bildschirm bereit.
-
- %
- %**************************** Zukunftsmusik ********************************
- %
- \chapter{Zukunftsmusik}
- Die Arbeit an \mf\ ist noch nicht abgeschlossen, da gibt es noch
- viel zu viele Ideen, was man besser und sch"oner machen k"onnte, und
- der eine oder andere Fehler l"a"st sich vermutlich auch noch in
- der Benutzeroberfl"ache finden. Sogar im \mf\ selbst kann man heute
- noch Fehler finden, man versuche nur mal, in einer Feld-, Wald- und
- Wiesen-Implementation das \inimf\ zu starten, keine Base-Datei zu
- laden, und \verb|\showstats| einzugeben. In 90\% aller Versionen
- (nat"urlich nicht in dieser) wird man "`{\tt Memory usage 23\&-1}"'
- zur Antwort bekommen. Und $-1$ verbrauchte Speicherzellen ist
- schon etwas ungew"ohnlich (keine Sorge, der Fehler ist inzwischen
- an den "`Chef"' weitergegeben).
-
- Da"s bei der Texteingabe kein Cursor zu sehen ist, st"ort manchmal schon
- gewaltig. Irgendwann wird auch das sicherlich in den Griff zu bekommen
- sein. Die Gedanken kreisen da allerdings viel weiter: wenn man die
- Eingabe "uber allgemeine Textfenster (wie sie heutzutage in jeder
- besseren grafischen Benutzeroberfl"ache enthalten sind, z.B. in X oder
- in SunView) gestalten w"urde, h"atte man enorm viel mehr M"oglichkeiten,
- angefangen bei einfachen Editorkommandos (Cursor-Bewegung, Zeichen l"oschen)
- bis hin zu Cut/Paste-Operationen "uber mehrere Fenster (und damit mehrere
- Dateien) hinweg. Eventuell k"onnte man das auch "uber h"ohere XACC-Levels
- in Zusammenhang mit einem einfachen Accessory-Editor, der auch das XACC-%
- Protokoll versteht, erledigen. Wer einen solchen Editor kennt, der noch
- dazu frei kopierbar sein sollte (PD- oder Shareware), m"oge mich bitte
- gleich benachrichtigen.
-
- Sch"on w"are es auch, wenn man die Setup-Datei von \mf\ aus "andern k"onnte.
- Ich stelle mir da einen Eintrag in der Men"uleiste vor, "ahnlich wie bei
- vielen anderen \gem-Programmen, wo man die Standard-Pfade angeben und
- anschlie"send abspeichern kann.
-
- Wenn die Larc-Bibliothek mal ausgereift ist, dann wird sicherlich
- auch in \mf\ die Behandlung der archivierten Dateien konsistenter
- und nat"urlicher werden. Letzten Endes ist ein Larc-Archiv ja
- nichts anderes als ein Directory, komplett mit Unterverzeichnissen
- und Dateien, und so sollte auch der Benutzer keinen Unterschied
- machen m"ussen (leider l"a"st sich das nicht so einfach auf den
- Desktop ausweiten, denn da mu"s der Benutzer immer noch selbst
- die entsprechenden Archivier-Programme aufrufen, anstatt sie wie
- normale Directories "uber Desktop-Fenster zu behandeln). In diesem
- Zusammenhang ist auch nicht einzusehen, warum \mf\ keine mit Pfad
- abgespeicherten Dateien in den Archiven duldet.
-
- Ein sicher sehr interessantes, aber auch aufwendiges Projekt w"are, \mf\
- mit der hervorragenden Benutzeroberfl"ache von {\mc SMALLTALK-80}
- zu verbinden. Ein erster Ansatzpunkt dazu ist die M"oglichkeit, C-Funktionen
- als "`primitive"' Methoden zu {\mc SMALLTALK-80} dazulinken zu k"onnen
- (und im Prinzip ist \mf\ nichts anderes als eine C-Funktion namens
- {\tt main}). Benutzern mit weniger als 4 MByte RAM w"urde das allerdings
- vermutlich nicht sehr viel bringen (h"ochstens den Wunsch nach mehr
- Speicher).
-
- %
- %
- %
- \begin{thebibliography}{9}
-
- \bibitem{mfbook}
- Knuth, Donald E. {\it The \mf book}, Computers and Typesetting Vol.~C,
- Addison-Wesley, Reading (Massachussets) 1986. 361 Seiten.
-
- Die definitive Anleitung zu \mf. Auf dieses Buch kann wohl nur
- verzichten, wer ausschlie"slich "`Computer Modern Roman"'-Zeichens"atze
- f"ur verschiedene Ausgabeger"ate erzeugt. Wer mit den Parametern etwas
- experimentieren will oder eigene Grafiken oder gar Zeichens"atze
- erzeugen will, sollte sich das \mf book zulegen, denn da steht
- praktisch alles drin, was der Benutzer wissen mu"s.
-
- \bibitem{mfprog}
- Knuth, Donald E. {\it \mf: The Program}, Computers and Typesetting
- Vol.~D, Addison-Wesley, Reading (Massachussets) 1986. 560 Seiten.
-
- Wer es ganz genau wissen will, kann hier den Original-Sourcecode in
- {\mc WEB} nachlesen. Dieses Buch ist die Grundlage meiner C-Version von
- \mf.
-
- \bibitem{texprog}
- Knuth, Donald E. {\it \TeX: The Program}, Computers and Typesetting
- Vol.~B, Addison-Wesley, Reading (Massachussets) 1984. 594 Seiten.
-
- Der Sourcecode von \TeX\ f"ur alle, die auch dort hinter die Kulissen
- schauen wollen. Ebenfalls in der Programmier- und Dokumentationssprache
- {\mc WEB} geschrieben.
-
- \bibitem{cm-typefaces}
- Knuth, Donald E. {\it Computer Modern Typefaces}, Computers and
- Typesetting Vol.~E, Addison-Wesley, Reading (Massachussets) 1986.
- 590 Seiten.
-
- Hier sind die ganzen \mf-Programme f"ur die komplette Computer Modern
- Schriftenfamilie dokumentiert, zusammen mit vielen Probeausdr"ucken (proofs).
- Man kann dieses Buch also als Nachschlagewerk, als Bilderbuch oder auch als
- Lehrbuch f"ur beispielhafte \mf-Programmierung ansehen.
-
- \bibitem{web}
- Knuth, Donald E. {\it The WEB System of Structured Documentation},
- Stanford Computer Science Report No.\ 980, Stanford University,
- Department of Computer Science, Stanford (California) 1983. 206 Seiten.
-
- Anleitung zu {\mc WEB} und Sourcecode zu {\mc WEAVE} und {\mc TANGLE}, die
- zusammen das {\mc WEB}-System bilden.
-
- \bibitem{pandora}
- Billawala, Nazneen N. {\it Metamarks: Preliminary studies for a
- Pandora's Box of shapes}, Stanford Computer Science Report No.~1256,
- Stanford University, Department of Computer Science, Stanford
- (California) 1989. Erh"altlich von der \TeX\ Users Group.
-
- Das Buch zu den Pandora-Fonts. Dieses Buch ist {\bf keine} Einf"uhrung
- in \mf, sondern mehr ein Bilderbuch, das die Ergebnisse einiger
- Experimente mit \mf\ zeigt. Das Herausragende an den Pandora-Fonts ist,
- da"s sie von Anfang an f"ur und vor allem mit \mf\ entwickelt und nicht
- wie die meisten anderen Zeichens"atze (cmr eingeschlossen) erst
- nachtr"aglich f"ur \mf\ zurechtgebogen wurden. Wer die Pandora-Fonts
- genauer studieren will, findet in diesem Buch einige Hinweise und die
- grundlegenden Elemente (Serifen, Kreise, B"ogen, Bowls), aus denen die
- Zeichen aufgebaut sind. Den Hauptteil des Buches machen
- Parametervariationen und ihre Auswirkungen auf das Aussehen der
- Zeichenelemente aus.
-
- \bibitem{kopka90}
- Kopka, Helmut. {\it \LaTeX\ -- Erweiterungsm"oglichkeiten},
- 2. Aufl., Addison-Wesley, Bonn 1991.
-
- Obwohl es in diesem Buch haupts"achlich um \LaTeX\ geht, enth"alt es
- auch eine knapp hundertseitige Kurzeinf"uhrung in \mf. Momentan ist dies
- das einzige deutsche Buch, das \mf\ behandelt. Angefangen bei den
- einzelnen Elementen des \mf-Systems (Programm-Umgebung) "uber die
- wichtigsten Grundlagen von \mf\ und seiner Programmiersprache bis
- hin zur Erzeugung eines Firmenlogos vermittelt Kopka das n"otige
- Wissen, um fertige \mf-Programme in ihrer Grundstruktur erfassen
- und eigene kleinere Arbeiten selbst erledigen zu k"onnen. Die ideale
- Vorbereitung f"ur das Werk des "`Meisters"', das \mf book.
- \end{thebibliography}
-
- \end{document}
-